制作与无序键列表相对应的字典值列表



我有的字典

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

以及与animal.keys()匹配的列表,但顺序除外:

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

创建一个与messy_animals列表顺序相同的包含animals.values()的列表的最简单方法是什么?

因此,预期输出为:

messy_animals_counts = [16, 21, 11, 24]

我希望清楚地表明我想要实现的目标。谢谢你,祝你周末愉快。

您可以通过列表理解来做到这一点:

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

如果您不知道messy_animals中的所有内容也在dict中,则可以使用get

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

如果为get方法提供第二个参数,则可以指定默认值(而不是None(。

该方法的时间复杂度为O(N(。

我找到了一个解决方案:

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]

您可以将内置函数mapdict.get:一起使用

list(map(animals.get, messy_animals))

输出:

[16, 21, 11, 24]

最新更新