我阅读了“Python Cookbook”并看到配方中的内容“寻找两个词典的交集”作者建议使用这样的单行词:
filter(another_dict.has_key, some_dict.keys())
但是由于Python 3字典没有has_key()方法,我应该如何修改建议的代码?我想在__()方法中可能会有一些内部__或类似的东西。
请问任何想法?
答案 0 :(得分:17)
Python 3具有字典键视图,这是一个更强大的概念。您的代码可以写成
some_dict.keys() & another_dict.keys()
在Python 3.x中。这会将两个词典的公共键作为一组返回。
这也可以在Python 2.7中使用方法dict.viewkeys()
。
作为原始代码的更接近的匹配,您还可以使用列表理解:
[key for key in some_dict if key in another_dict]
原始代码更接近的匹配是使用dict.__contains__()
,这是与in
运算符对应的神奇方法:
filter(another_dict.__contains__, some_dict.keys())
但请不要使用此代码。我建议使用第一个版本,这是唯一突出some_dict
和another_dict
之间对称性的版本。