Создание нового списка значений словаря, ключи которого соответствуют элементам в отдельном списке - PullRequest
0 голосов
/ 04 марта 2019

В этом словаре хранятся сельскохозяйственные животные в качестве ключа, а их местоположение в качестве значения.

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 голосов
/ 04 марта 2019

Вы можете сопоставить список 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 dict.

0 голосов
/ 04 марта 2019

Как насчет простого понимания списка?

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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...