比方说,我有一个列表l = [1、2、3、4]和一个字典d = {2:a,4:b}。 我想仅在键也在列表中提取d的值,并将结果放入新列表中。 到目前为止,这是我尝试过的:
new_l=[]
for i in l:
for key in d.keys():
if key in l:
new_l.append(d[key])
print (new_l)
预先感谢您的帮助。
答案 0 :(得分:2)
这将比较字典中的每个值以及列表中是否匹配。
简单的答案。
>>> l
[1, 2, 3, 4]
>>> d
{2: 'a', 4: 'b'}
>>> [value for (key,value) in d.items() if key in l]
['a', 'b']
答案 1 :(得分:1)
您无需在第二个for
循环中循环浏览每个键。使用Python,您可以只使用列表推导:
L = [1, 2, 3, 4]
d = {2: 'a', 4: 'b'}
res = [d[i] for i in L if i in d] # ['a', 'b']
如果您知道字典的值是非伪的(例如,不是0
,None
),则可以使用其他功能解决方案。 filter
是一个惰性迭代器,因此您需要在后续步骤中通过list
用尽:
res = filter(None, map(d.get, L))
print(list(res)) # ['a', 'b']
答案 2 :(得分:0)
您可以跳过迭代l
例如:
l=[1, 2, 3, 4]
d={2:"a", 4:"b"}
new_l=[]
for key in d.keys():
if key in l:
new_l.append(d[key])
print (new_l)
答案 3 :(得分:0)
使用key迭代字典并匹配列表中存在的key。
L=[1, 2, 3, 4]
d={2:"a", 4:"b"}
new_l=[]
for k in d.keys():
if k in L:
new_l.append(d[k])
print (new_l)