制作新的字典值列表,其键值与单独列表中的项匹配

时间:2019-03-04 15:23:15

标签: python list dictionary

此词典将农场动物存储为键,并将其位置存储为值。

id_name_dict = {
    'cat': 'barn', 'dog': 'field', 'chicken': 'coop',
    'sheep': 'pasture', 'horse': 'barn', 'cow': 'barn'
}

此列表存储了我想知道其位置的农场动物的名字

wanted_farm_animals = ['cat,', 'dog', 'horse']

所需的输出是一个新的列表,其中包含了wanted_farm_animals位置

n = ['barn', 'field', 'barn']

这是我尝试执行的代码

n = []
for animal, location in id_name_dict.items():
    for a in wanted_farm_animals:
        if a == animal:
            n.append(location)
print(n)

但是,输出不完整。只有

['field', 'barn']

如何获得正确的所需输出?

2 个答案:

答案 0 :(得分:0)

简单的列表理解如何?

id_name_dict = {
    'cat': 'barn', 'dog': 'field', 'chicken': 'coop',
    'sheep': 'pasture', 'horse': 'barn', 'cow': 'barn'
}    
wanted_farm_animals = ['cat', 'dog', 'horse']

result = [v for k,v in id_name_dict.items() if k in wanted_farm_animals]
# ['barn', 'field', 'barn']

答案 1 :(得分:0)

您可以将wanted_farm_animals列表映射到绑定到dict.get字典的id_name_dict方法:

n = list(map(id_name_dict.get, wanted_farm_animals))

通过使用dict.get方法,您将获得None列表中但不在键中的项目的默认值KeyError而不是wanted_farm_animals例外id_name_dict格。