目录
1. d.fromkeys(iterable[, value])
1. d.fromkeys(iterable[, value])
.fromkeys(iterable[, value]) 方法,使用 iterable 参数指定的可迭代对象来创建一个新字典,并将所有的值初始化为 value 参数指定的值;
如果不指定 value 参数,则采用默认值 None;
注意,字典中所有键都不相同,如果iterable中有相同元素,则只会生成一个键;
#.fromkeys使用字符串创建字典
d.fromkeys('abcd',0)
{'a': 0, 'b': 0, 'c': 0, 'd': 0}
#.fromkeys使用元组创建字典
d.fromkeys((1,2,3,4),'a')
{1: 'a', 2: 'a', 3: 'a', 4: 'a'}
#.fromkeys使用列表创建默认值为None字典
d.fromkeys([2.0,1+2j,'x'])
{2.0: None, (1+2j): None, 'x': None}
#字典中所有键都不相同,.fromkeys参数iterable中有相同键,则只会生成一个
d.fromkeys('abca',0)
{'a': 0, 'b': 0, 'c': 0}
d.fromkeys([1,2,3,1.00],0)
{1: 0, 2: 0, 3: 0}
2. d[key] = value
如果要修改某个值,使用d[key] = value;
如果key不存在,则d[key] = value在字典d中新增键值对key:value。
d = {'a':1,"b":2,"c":3}
#修改键‘a’对应的值
d['a'] = 0
d
{'a': 0, 'b': 2, 'c': 3}
#新建键‘z’,并赋值
d['z'] = 99
d
{'a': 0, 'b': 2, 'c': 3, 'z': 99}
3. d.update(other)
使用 other 参数指定的键值对更新字典,覆盖原有的 “键”,返回值为 None;
参考2. dict()创建字典,.update()可以按相同的规则传入键值对,或者另外一个字典,或者一个包含键值对的可迭代对象,或者混合传入一个字典/可迭代对象+多个键值对;
如果更新的多个值使用同名的键,则相互覆盖,直到更新为最后一个值;
如果更新的键,在原字典中不存在,则新建键值对。
d = d.fromkeys('abcde')
d
{'a': None, 'b': None, 'c': None, 'd': None, 'e': None}
#更新参数:字典+1个键值对,更新成功
d.update({'a':1,'b':2},c=3)
d
{'a': 1, 'b': 2, 'c': 3, 'd': None, 'e': None}
#更新参数:可迭代对象+多个键值对,更新成功
d.update([('d','x'),('a','y')],c='z',b=0)
d
{'a': 'y', 'b': 0, 'c': 'z', 'd': 'x', 'e': None}
#更新参数:多个键值对,新增原字典不存在的键值对,其他更新成功
d.update(e=5,d=4,c=3,b=2,a=1,f=0)
d
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 0}
#更新参数:字典和可迭代对象,新增原字典不存在的键值对,其他更新成功
d.update({'g':7,'f':6},a=0)
d
{'a': 0, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7}
d.update([('h',8),('a',1)])
d
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8}
4. d | other
合并 d 和 other 中的键和值来创建一个新的字典,两者必须都是字典;
当 d 和 other 有相同键时, other 的值优先。
#合并 d 和 other 中的键和值来创建一个新的字典
d1 = {'a':1,'b':2,'c':3}
d2 = {'x':4,'y':5,'z':6}
d1 | d2
{'a': 1, 'b': 2, 'c': 3, 'x': 4, 'y': 5, 'z': 6}
#d 和 other 必须都是字典,否则报错
d1 = {'a':1,'b':2,'c':3}
d2 = [('x',4),('y',5),('z',6)]
d1 | d2
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'dict' and 'list'
#当 d 和 other 有相同键时, other 的值优先
d1 = {'a':1,'b':2,'c':3}
d2 = {'x':4,'y':5,'b':6}
d1 | d2
{'a': 1, 'b': 6, 'c': 3, 'x': 4, 'y': 5}
5. d |= other
用 other 的键和值更新字典 d ;
other 可以是 mapping 或 iterable 的键值对;
当 d 和 other 有相同键时, other 的值优先。
#用 other 的键和值更新字典 d
d1 = {'a':1,'b':2,'c':3}
d2 = {'x':4,'y':5,'z':6}
d1 |= d2
d1
{'a': 1, 'b': 2, 'c': 3, 'x': 4, 'y': 5, 'z': 6}
#other是iterable 的键值对,更新成功
d1 = {'a':1,'b':2,'c':3}
d2 = [('x',4),('y',5),('z',6)]
d1 |= d2
d1
{'a': 1, 'b': 2, 'c': 3, 'x': 4, 'y': 5, 'z': 6}
#当 d 和 other 有相同键时, other 的值优先
d1 = {'a':1,'b':2,'c':3}
d2 =[('x',4),('y',5),('b',6)]
d1 |= d2
d1
{'a': 1, 'b': 6, 'c': 3, 'x': 4, 'y': 5}