如何解决何时使用字典| 合并与| =更新运算符
何时在字典上使用合并vs更新运算符。
以下示例虽然在调用方式上有所不同,但它们的输出是相同的。
a = {1: 'a',2: 'b',3: 'c',6: 'in both'}
b = {4: 'd',5: 'e',6: 'but different'}
使用更新操作符
z = a | b
print(z)
输出:{1:'a',2:'b',3:'c',6:'但与众不同',4:'d',5:'e'}
使用合并运算符
a |= b
print(a)
输出:{1:'a',2:'b',3:'c',6:'但与众不同',4:'d',5:'e'}
似乎|的唯一优势(合并)是它不会覆盖您的旧字典。
还有其他我想念的东西吗?
我什么时候应该选择一个使用?
解决方法
|=
运算符仅使用并运算的结果来更新原始词典。 |
运算符返回新字典,该字典是两个字典的并集。假设我们有两套
a = {'hello','world','abc','def'}
b = {'abc','ghi','jkl'}
对于列表,操作a |= b
与a = a | b
类似,与a += b
与a = a + b
类似。
a = {'hello','def'}
al = list(a)
b = {'abc','jkl'}
bl = list(b)
print("Before: ",hex(id(a)),a)
a = a | b
print("After: ",a)
# Output:
# Before: 0x1aa0186f128 {'world','def','hello'}
# After: 0x1aa0186f828 {'world','hello','jkl','abc'}
print("Before: ",hex(id(al)),al)
al = al + bl
print("After: ",al)
# Output:
# Before: 0x1aa0187a248 ['world','hello']
# After: 0x1aa0366bdc8 ['world','ghi']
显然,a
现在是位于内存中不同位置的新集。
a = {'hello','jkl'}
bl = list(b)
print("Before",a)
a |= b
print("After",a)
# Output:
# Before 0x1aa0186f128 {'world','hello'}
# After 0x1aa0186f128 {'world','abc'}
print("Before",al)
al += bl
print("After",al)
# Output:
# Before 0x1aa03646888 ['world','hello']
# After 0x1aa03646888 ['world','ghi']
在这种情况下,a
仍然是内存中同一位置的旧集,但是其内容已更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。