【发布时间】:2020-09-05 19:40:54
【问题描述】:
我在 python 中有一个列表和字典说,
list A = [1, 3]
dict B = {'apple':1, 'orange':3, 'carrot': 4}
所以现在我想在 python 中使用列表推导并在列表 A 中获取带有“值”的键列表。
【问题讨论】:
-
你意识到你正在“反向”运行字典吧?
标签: python
我在 python 中有一个列表和字典说,
list A = [1, 3]
dict B = {'apple':1, 'orange':3, 'carrot': 4}
所以现在我想在 python 中使用列表推导并在列表 A 中获取带有“值”的键列表。
【问题讨论】:
标签: python
首先您需要遍历字典,然后检查该值是否在另一个列表中。
这可以在有或没有列表理解的情况下完成。
使用列表理解:
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}
【讨论】:
list(c.keys()) 为键列表,更正应为v in a
set(a) 以降低 in 操作的时间复杂度
这个小列表理解应该可以。
a = [1,3]
b = {'apple':1, 'orange':3, 'carrot': 4}
print([x for x in b if b[x] in a])
【讨论】: