字典键匹配列表;得到键/值对

时间:2011-06-28 10:25:43

标签: python list dictionary match key

在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 个答案:

答案 0 :(得分:34)

(我将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}

答案 1 :(得分:15)

请勿使用dictlist作为变量名称。它们影响了内置函数。假设列表l和字典d

kv = [(k, d[k]) for k in l if k in d]

答案 2 :(得分:11)

 new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)

将列表转换为集合set(list) 可能会显着提高速度

答案 3 :(得分:3)

print([kv for kv in dict.items() if kv[0] in list])

怎么样?

答案 4 :(得分:3)

试试这个:

mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one','ten']
newList={k:mydict[k] for k in mykeys if k in mydict}
print newList
{'three': 3, 'one': 1}

答案 5 :(得分:0)

这是

的单行解决方案
String pattern = "a+e+i+o+u+";
boolean match = myStr.matches(pattern);