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

发布于 2024-11-17 21:02:52 字数 257 浏览 2 评论 0原文

在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)

但它不起作用。

In python... I have a list of elements 'my_list', and a dictionary 'my_dict' where some keys match in 'my_list'.

I would like to search the dictionary and retrieve key/value pairs for the keys matching the 'my_list' elements.

I tried this...

    if any(x in my_dict for x in my_list):
          print set(my_list)&set(my_dict)

But it doesn't do the job.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

愿与i 2024-11-24 21:02:52

与类型名称冲突。)

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

(I renamed list to my_list and dict to my_dict to avoid the conflict with the type names.)

For better performance, you should iterate over the list and check for membership in the dictionary:

for k in my_list:
    if k in my_dict:
        print(k, my_dict[k])

If you want to create a new dictionary from these key-value pairs, use

new_dict = {k: my_dict[k] for k in my_list if k in my_dict}
明月夜 2024-11-24 21:02:52

不要使用 dictlist 作为变量名称。它们隐藏了内置函数。假设列表 l 和字典 d

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

Don't use dict and list as variable names. They shadow the built-in functions. Assuming list l and dictionary d:

kv = [(k, d[k]) for k in l if k in d]
時窥 2024-11-24 21:02:52
 new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)

将列表转换为集合set(list)可能会带来明显的速度提升

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

Turning list into a set set(list) may yield a noticeable speed increase

暗喜 2024-11-24 21:02:52

试试这个:

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}

Try This:

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}
北城孤痞 2024-11-24 21:02:52

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

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

清秋悲枫 2024-11-24 21:02:52

这是一个单行解决方案

{i:my_dict[i] for i in set(my_dict.keys()).intersection(set(my_list))}

Here is a one line solution for that

{i:my_dict[i] for i in set(my_dict.keys()).intersection(set(my_list))}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文