将dicts分成三个列表,根据键保留顺序

时间:2018-06-06 20:47:00

标签: python list dictionary key

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

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循环,但无法正确保存顺序。

3 个答案:

答案 0 :(得分:1)

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

list1 = dict1.values()

等...

结果

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

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

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

结果

[200, 344, 204, 38, 14]

答案 1 :(得分:1)

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

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]

答案 2 :(得分:0)

所以我找到了最好的解决方案,感谢@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)]

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