没有用于Python 3字典的has_key()方法

时间:2012-06-15 13:31:32

标签: python python-3.x

我阅读了“Python Cookbook”并看到配方中的内容“寻找两个词典的交集”作者建议使用这样的单行词:

filter(another_dict.has_key, some_dict.keys())

但是由于Python 3字典没有has_key()方法,我应该如何修改建议的代码?我想在__()方法中可能会有一些内部__或类似的东西。

请问任何想法?

1 个答案:

答案 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_dictanother_dict之间对称性的版本。