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

pei*_*ixe 17 python dictionary key list match

在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)
Run Code Online (Sandbox Code Playgroud)

但它没有做到这一点.

Sve*_*ach 35

(我改名list,以my_listdictmy_dict避免与类型名称冲突.)

为了获得更好的性能,您应该遍历列表并检查字典中的成员身份:

for k in my_list:
    if k in my_dict:
        print k, my_dict[k]
Run Code Online (Sandbox Code Playgroud)

如果要从这些键值对创建新词典,请使用

new_dict = {k: my_dict[k] for k in my_list if k in my_dict}
Run Code Online (Sandbox Code Playgroud)


Fel*_*ing 15

不要使用dictlist作为变量名.它们影响了内置函数.假设列表l和字典d:

kv = [(k, d[k]) for k in l if k in d]
Run Code Online (Sandbox Code Playgroud)


Rob*_*wie 11

 new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)
Run Code Online (Sandbox Code Playgroud)

将列表转换为集合set(list) 可能会产生明显的速度增加

  • 注意,"如果列表中的k"将是"O(n)". (2认同)