将字典分成三个列表,保留基于键的顺序



好吧,也许我的标题不是最好的,但这基本上是我的问题: 我有三个词典看起来像这样:

dict1 = {'America': 200, 'Europe': 344, 'Asia': 204, 'Oceania': 38, 'Africa': 14}
dict2 = {'Europe': 394, 'America': 225, 'Asia': 293, 'Oceania': 43, 'Africa': 26}
dict3 = {'Europe': 420, 'America': 250, 'Asia': 363, 'Oceania': 43, 'Africa': 27}

我想做的是,将字典分成三个列表,根据它们的关键值正确"拆分",就像这样:

list1 = [200, 344, 204, 38, 14]
list2 = [225, 394, 293, 43, 26]
list3 = [250, 420, 363, 43, 27]

编辑:所需顺序=['美洲','欧洲','亚洲','大洋洲','非洲']

这容易吗?我尝试了一堆 for 循环,但无法正确保持秩序。

Python 中有一个内置的字典方法

list1 = dict1.values()

等。。。

结果在

dict_values([200, 344, 204, 38, 14])

此外,您可以使用列表推导式

list1 = [x for y,x in dict1.items()]

结果在

[200, 344, 204, 38, 14]

如果键的顺序是任意的,那么你需要在某个可迭代对象中对其进行硬编码。然后,可以使用列表推导式按所需顺序从键中获取值。

d1 = {'America': 200, 'Europe': 344, 'Asia': 204, 'Oceania': 38, 'Africa': 14}
d2 = {'Europe': 394, 'America': 225, 'Asia': 293, 'Oceania': 43, 'Africa': 26}
d3 = {'Europe': 420, 'America': 250, 'Asia': 363, 'Oceania': 43, 'Africa': 27}
order = ['America', 'Europe', 'Asia', 'Oceania', 'Africa']
list1 = [d1[k] for k in order] # [200, 344, 204, 38, 14]
list2 = [d2[k] for k in order] # [225, 394, 293, 43, 26]
list3 = [d3[k] for k in order] # [250, 420, 363, 43, 27]

因此,由于@abarnert,我找到了最佳解决方案:

list1 = [count_2016[key] for key in sorted(count_2016)]
list2 = [count_2017[key] for key in sorted(count_2017)]
list3 = [count_2018[key] for key in sorted(count_2018)]

这将为每个列表保留相同的顺序。

最新更新