我知道这是python 2中一种非常有效的方式,可以交叉2个词典
filter(dict_1.has_key, dict_2.keys())
但是has_key()从Python3中删除了,所以我无法真正使用快速filter()和has_key()功能。我现在正在做的是:
[key for key in dict_2 if key in dict_1]
您可以在Python 3.x中使用运算符,而不是在Python 2 中。有了filter,它在3.x中提供了一个迭代器,你可以使用dict.__contains__。也没有必要调试dict.keys:
res = filter(dict_1.__contains__, dict_2) # lazy
print(list(res))
一种等效但不太美观lambda的解决方案:
res = filter(lambda x: x in dict_1, dict_2) # lazy
生成器表达式是第三种选择:
res = (x for x in dict_2 if ix in dict_1) # lazy
对于非惰性方法,您可以使用set.intersection:
res = set(dict_1) & set(dict_2) # {2, 3}
可以这样做:
d1 = {1 : 1, 2 : 2}
d2 = {1 : 3, 2 : 4, 3 : 5}
common = list(d1.keys() & d2.keys())
print(common)
产出
[1, 2]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。