Python 3字典没有has_key()方法

2024-04-24 23:12:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我读了“Python食谱”,看看作者推荐的“寻找两个词典的交集”的菜谱是什么:

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

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

有什么想法吗?


Tags: 方法key字典anothersome作者keysfilter
1条回答
网友
1楼 · 发布于 2024-04-24 23:12:07

Python 3有字典键视图,这是一个更强大的概念。你的代码可以写成

some_dict.keys() & another_dict.keys()

在Python3.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之间对称性的版本。

相关问题 更多 >