在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)
但它没有完成这项工作。
答案 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)
请勿使用dict
和list
作为变量名称。它们影响了内置函数。假设列表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);