wub*_*000 4 python dictionary list-comprehension set
在Python中,我想编写一个列表解析来迭代2个字典的键的并集.这是一个玩具示例:
A = {"bruno":1, "abe":2}.keys()
B = {"abe":5, "carlton":10}.keys()
>>>[ k for k in A | B ]
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Traceback (most recent call last)
<ipython-input-221-ed92ac3be973> in <module>()
2 B= {"abe":5, "carlton":10}.keys()
3
----> 4 [ k for k in A|B]
TypeError: unsupported operand type(s) for |: 'list' and 'list'
Run Code Online (Sandbox Code Playgroud)
理解对于1个词典来说效果很好.例如:
>>>[ k for k in A]
['bruno', 'abe']
Run Code Online (Sandbox Code Playgroud)
不确定错误在哪里.我在教科书中跟随一个例子,根据这本书,这种类型的并集和交集运算符应该可以正常工作.请让我知道你的想法.谢谢.
在Python 2中,dict.keys()是列表,而不是字典视图.dict.viewkeys()改为使用:
A = {"bruno":1, "abe":2}.viewkeys()
B = {"abe":5, "carlton":10}.viewkeys()
[k for k in A | B]
Run Code Online (Sandbox Code Playgroud)
您的示例可以在Python 3中使用,其中该.keys()方法已更改为默认情况下返回字典视图.
演示:
>>> A = {"bruno":1, "abe":2}.viewkeys()
>>> B = {"abe":5, "carlton":10}.viewkeys()
>>> [k for k in A | B]
['carlton', 'bruno', 'abe']
Run Code Online (Sandbox Code Playgroud)
听起来好像你的教科书假设你正在使用Python 3.切换教科书,或者使用Python 3来运行这些示例,在你获得Python 2和3之间差异的更多经验之前,不要试图将两者混合使用.
对于记录,一个字典视图支持具有一组操作|,^,-和&针对任何迭代上的右手侧运营商; 所以以下工作也是如此:
A_dict = {"bruno":1, "abe":2}
B_dict = {"abe":5, "carlton":10}
[k for k in A_dict.viewkeys() | B_dict]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3021 次 |
| 最近记录: |