2024-05-23 16:33:09 发布
网友
我读了“Python食谱”,看看作者推荐的“寻找两个词典的交集”的菜谱是什么:
filter(another_dict.has_key, some_dict.keys())
但是,由于Python3字典没有has_key()方法,我应该如何修改建议的代码?我想可能有一些内部的方法或者类似的东西。
有什么想法吗?
Python 3有字典键视图,这是一个更强大的概念。你的代码可以写成
some_dict.keys() & another_dict.keys()
在Python3.x中,这将两个字典的公共键作为一个集合返回。
这在Python 2.7中也可以使用方法dict.viewkeys()。
dict.viewkeys()
为了更接近原始代码,您还可以使用列表理解:
[key for key in some_dict if key in another_dict]
与原始代码更接近的匹配是使用dict.__contains__(),这是对应于in运算符的神奇方法:
dict.__contains__()
in
filter(another_dict.__contains__, some_dict.keys())
但请不要用这个密码。我建议使用第一个版本,这是唯一一个强调some_dict和another_dict之间对称性的版本。
some_dict
another_dict
Python 3有字典键视图,这是一个更强大的概念。你的代码可以写成
在Python3.x中,这将两个字典的公共键作为一个集合返回。
这在Python 2.7中也可以使用方法
dict.viewkeys()
。为了更接近原始代码,您还可以使用列表理解:
与原始代码更接近的匹配是使用
dict.__contains__()
,这是对应于in
运算符的神奇方法:但请不要用这个密码。我建议使用第一个版本,这是唯一一个强调
some_dict
和another_dict
之间对称性的版本。相关问题 更多 >
编程相关推荐