dict:
初始化方法:
dict() -> new empty dictionary
dict(mapping) -> new dictionary initialized from a mapping object's (key,value) pairs
之所以有很多括号,是因为dict(mapping)只接受一个mapping参数。所以通过括号将多个元组组成一个
dict(iterable) -> new dictionary initialized as if via:
d = {}
for k,v in iterable:
d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list, for example: dict(one=1,two=2)
注意不要为name加引号,赋值函数会自动加的
但是访问时需要加引号
访问时,dict中没有此key,dict会新建一个key-value,有的话如果赋值和之前不同,会改成现在的值
dict()不是普通函数,而是工厂函数
常用函数:
dict.fromkeys(S[,v]) ->new dict with keys from S and values equal to v(v defaults to None)
注意以下这种情况:
keys(), values(),items()分别表示dict的键,值和项
当使用dict访问不存在的键时, 直接使用索引,比如dict1[32] (假设dict只有0-31元素),此时程序就会报错,对用户不太友好。
此时应该使用 get方法,dict1.get(32) 不存在的话,程序可以正常结束,如果dict1.get(32,'a'),32存在打印dict中32对应的值,32不存在,打印’a'
判断key是否在dict中,使用in和not in
注意: dict中in和not in查找的是键而不是值, 但是序列中in和not in查找的是值,而不是元素的索引号
清空字典: clear()
虽然也可以使用 dict1 = {},也就是说直接对dict1赋值空dict也等于是把dict清空,但是不建议这么做。原因见下图:
浅拷贝: copy()
注意: 赋值不是浅拷贝。直接赋值只是在同一个位置贴不同的标签,但是浅拷贝是对对象的一个简单的复制
pop() 给定键弹出对应的值
popitem() 弹出一个项,注意不是弹出第一个,而是随机弹。因为在字典里面是没有顺序的,有顺序的里面是弹出最后一个。
setdefault() 和get方法有一些类似,不同之处在于,当setdefault()找不到相应的key时会自动添加
update() : 利用一个字典或映射关系去更新另外一个字典