Составление списка значений словаря, которые соответствуют неупорядоченному списку ключей - PullRequest
1 голос
/ 21 марта 2020

У меня есть словарь

animals = {'cat': 24, 'dog': 21, 'bird': 16, 'fish': 11}

и список, соответствующий animal.keys(), за исключением порядка:

messy_animals = ['bird', 'dog', 'fish', 'cat']

, что было бы самым простым способом создать список, содержащий animals.values() в том же порядке, что и список messy_animals?

Таким образом, ожидаемый результат будет:

messy_animals_counts = [16, 21, 11, 24]

Надеюсь, понятно, чего я хочу достичь sh. Спасибо и хороших выходных.

Ответы [ 3 ]

2 голосов
/ 21 марта 2020

Вы можете сделать это с пониманием списка:

messy_animal_counts = [animals[m] for m in messy_animals]

Если вы не знаете, что все в messy_animals также есть в диктанте, вы можете использовать get вместо этого.

messy_animal_counts = [animals.get(m) for m in messy_animals]

Если вы предоставляете второй параметр для метода get, вы можете указать значение по умолчанию (вместо None).

Этот метод имеет временную сложность O (N).

1 голос
/ 21 марта 2020

Вы можете использовать встроенную функцию map с dict.get:

list(map(animals.get, messy_animals))

, вывод:

[16, 21, 11, 24]
1 голос
/ 21 марта 2020

Я нашел решение:

for x in messy_a:
    for k,v in animals.items():
        if x == k:
            messy_a_counts.append(v)

print(messy_a_counts)

Вывод:

[16, 21, 11, 24]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...