字典键与列表匹配;获取键/值对
在Python中,我有一个元素列表叫做'my_list',还有一个字典'my_dict',其中一些字典的键和'my_list'中的元素是相同的。
我想在这个字典里查找,并获取那些和'my_list'元素匹配的键值对。
我试过这样做...
if any(x in my_dict for x in my_list):
print set(my_list)&set(my_dict)
但是这样并没有达到我的目的。
6 个回答
13
new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)
把列表变成集合可以用这个方法 set(list)
,这样做可能会让速度明显变快。
16
不要把 dict
和 list
用作变量名。这会覆盖掉 Python 自带的功能。假设你有一个列表 l
和一个字典 d
:
kv = [(k, d[k]) for k in l if k in d]
43
(我把 list
改成了 my_list
,把 dict
改成了 my_dict
,这样可以避免和类型名称冲突。)
为了提高性能,你应该遍历这个列表,并检查它们是否在字典里:
for k in my_list:
if k in my_dict:
print(k, my_dict[k])
如果你想从这些键值对中创建一个新的字典,可以使用:
new_dict = {k: my_dict[k] for k in my_list if k in my_dict}