字典3:增改方法实操

目录

1. d.fromkeys(iterable[, value])

2. d[key] = value

3. d.update(other)

4. d | other

5. d |= other


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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值