字典键与列表匹配;获取键/值对

22 投票
6 回答
97655 浏览
提问于 2025-04-16 20:26

在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

不要把 dictlist 用作变量名。这会覆盖掉 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}

撰写回答