我读了"Python Cookbook",看看在"寻找两个字典的交叉点"的作品中,作者建议使用这样的单行:
filter(another_dict.has_key, some_dict.keys())
Run Code Online (Sandbox Code Playgroud)
但是由于Python 3字典没有has_key()方法,我应该如何修改建议的代码?我想在__()方法中可能有一些内部__或类似的东西.
请问有什么想法吗?
Sve*_*ach 17
Python 3具有字典键视图,而是一个更强大的概念.您的代码可以写成
some_dict.keys() & another_dict.keys()
Run Code Online (Sandbox Code Playgroud)
在Python 3.x. 这将两个字典的公共键作为一组返回.
这也可以在Python 2.7中使用该方法dict.viewkeys().
作为原始代码的更接近匹配,您还可以使用列表理解:
[key for key in some_dict if key in another_dict]
Run Code Online (Sandbox Code Playgroud)
原始代码的更紧密匹配将是使用dict.__contains__(),这是对应于in运算符的魔术方法:
filter(another_dict.__contains__, some_dict.keys())
Run Code Online (Sandbox Code Playgroud)
但请不要使用此代码.我建议用第一个版本,这是唯一一个突出的对称性会some_dict和another_dict.
| 归档时间: |
|
| 查看次数: |
9958 次 |
| 最近记录: |