好吧,也许我的标题不是最好的,但这基本上是我的问题: 我有三个词典看起来像这样:
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)]
这将为每个列表保留相同的顺序。