Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用列表理解从dict获取密钥_Python - Fatal编程技术网

Python 使用列表理解从dict获取密钥

Python 使用列表理解从dict获取密钥,python,Python,我有一个python的列表和dict, 列表A=[1,3] dict B={'apple':1,'orange':3,'carrot':4} 因此,现在我想在python中使用列表理解,并获取列表A中带有“值”的键列表。首先需要循环遍历字典,然后检查值是否在其他列表中。 这可以通过列表理解来完成,也可以不通过列表理解来完成 使用列表理解: value = [x for x in B if B[x] in A] value = [] for x in B: if B[x] in A:

我有一个python的列表和dict,
列表A=[1,3]
dict B={'apple':1,'orange':3,'carrot':4}

因此,现在我想在python中使用列表理解,并获取列表A中带有“值”的键列表。

首先需要循环遍历字典,然后检查值是否在其他列表中。
这可以通过列表理解来完成,也可以不通过列表理解来完成

使用列表理解:

value = [x for x in B if B[x] in A]
value = []
for x in B:
    if B[x] in A:
        value.append(x)
没有列表理解:

value = [x for x in B if B[x] in A]
value = []
for x in B:
    if B[x] in A:
        value.append(x)

TL;DR

a = set([1,3])
b = {'apple':1, 'orange':3, 'carrot': 4} 

# Filter dict b with a as keys
c = {k:v for k,v in b.items() if k in a}

这个小列表应该可以理解

a=[1,3]
b={‘苹果’:1,‘橙色’:3,‘胡萝卜’:4}
打印([x代表b中的x,如果b[x]代表a])

您意识到您正在“反向”运行字典,对吗?
列表(c.keys())
对于键列表,更正应该是a中的
v
此外,将列表a转换为
set(a)
以降低操作中
的时间复杂度,而此代码可以解决OP的问题,最好包括关于代码如何解决OP问题的解释。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或用源文档补充说明。已修复。谢谢你的推荐。