我有的字典
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]
您可以将内置函数map
与dict.get
:一起使用
list(map(animals.get, messy_animals))
输出:
[16, 21, 11, 24]