如何仅从字典中提取某些值(Python)

时间:2018-10-26 07:41:10

标签: python list dictionary

比方说,我有一个列表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)

预先感谢您的帮助。

4 个答案:

答案 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']

如果您知道字典的值是非伪的(例如,不是0None),则可以使用其他功能解决方案。 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)