跟随小甲鱼up主学习Python——字典上、中篇

字典是Python中唯一实现映射关系的内置函数。映射关系相当于摩斯密码,一一对应的,在映射类型的数据获取上,字典的效率往往快于列表。字典的关键符号为大括号{} 。集合:set, 字典:dict,通常都是一对键值对的形式出现,键 冒号 值,代码中:吕布就是键,口口布就是值,中间有冒号。

字典:dict>>> x = {"吕布", "关羽"}
>>> type(x)
<class 'set'>
>>> y = {"吕布" : "口口布", "关羽" : "关习习"}
>>> type(y)
<class 'dict'>

通过索引键就可以得到值,如果指定一个不存在于字典中的键就可以创建一个新的键值对

>>> y["吕布"]
'口口布'
>>> y["刘备"] = "刘baby"
>>> y
{'吕布': '口口布', '关羽': '关习习', '刘备': '刘baby'}

创建字典的六种方法

第一种:直接使用大括号和冒号的组合,将映射关系给套牢。

>>> a = {"吕布" : "口口布", "关羽" : "关习习", "刘备" : "刘baby"}

第二种:使用dict()函数,每个参数之间就是一个对应的键值对,键与值之间直接使用等号进行挂钩,注意:
>>> b = {吕布 = "口口布", 关羽 = "关习习", 刘备 = "刘baby"}    //错误写法
SyntaxError: invalid syntax

>>> b = dict(吕布="口口布", 关羽="关习习", 刘备="刘baby")     //正确写法,注:不能往键上加引号

第三种:使用列表作为参数,列表中的每一个元素是使用元组包裹起来的键值对。

>>> c = dict([("吕布" , "口口布"), ("关羽" , "关习习"), ("刘备" , "刘baby")])

第四种:将第一种方法作为参数传递给dict()函数

>>> d = dict({"吕布" : "口口布", "关羽" : "关习习", "刘备" : "刘baby"})

第五种:混合法

>>> e = dict({"吕布" : "口口布", "关羽" : "关习习"}, 刘备 = "刘baby")

第六种:zip()函数:创建一个聚合多个可迭代对象的迭代器,可作为参数传递给dict()函数

>>> f = dict(zip(["吕布", "关羽",  "刘备"], ["口口布",  "关习习", "刘baby"]))

字典也有增删改查

增:fromkeys(iterable[,values]) 可以使用iterable参数指定的可迭代对象来创建一个新的字典,并将所有的值初始化为values参数指定的值。

>>> d = dict.fromkeys("fish" ,250)
>>> d
{'f': 250, 'i': 250, 's': 250, 'h': 250}
>>> d['f'] = 70                                                  //可以修改键的值
>>> d
{'f': 70, 'i': 250, 's': 250, 'h': 250}
>>> d['c'] = 66                                                //如果找不到键,则可以增加一个新的键值对
>>> d
{'f': 70, 'i': 250, 's': 250, 'h': 250, 'c': 66}

字典和序列的区别:在序列中的元素是可以重复的,而字典中的键值对,它一个键对应一个值,并不会存在重复的键,如果重复了就用新的值去覆盖旧的值。

删:pop(key[,default])

>>> d.pop('s')
250
>>> d
{'f': 70, 'i': 250, 'h': 250, 'c': 66}

如果pop一个不存在的键就会抛出异常

>>> d.pop('a')
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    d.pop('a')
KeyError: 'a'

popitem()在3.7版本以后,它作用是删除最后一个加入字典的键值对

>>> d.popitem()
('c', 66)
>>> d
{'f': 70, 'i': 250, 'h': 250}

del关键字也可以用于删除一个指定的字典元素,也可以直接加上字典的名字,相当于干掉了整个字典,字典就不存在了。

>>> del d['i']
>>> d
{'f': 70, 'h': 250}
>>> del d
>>> d

Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    d
NameError: name 'd' is not defined

clear()方法:只清空字典中的内容

>>> d = dict.fromkeys("fish" ,250)
>>> d
{'f': 250, 'i': 250, 's': 250, 'h': 250}
>>> d.clear()
>>> d
{}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值