如何在python dict中反转键的顺序?

时间:2011-03-28 06:57:58

标签: python dictionary reverse

这是我的代码:

a = {0:'000000',1:'11111',3:'333333',4:'444444'}

for i in a:
    print i

它显示:

0
1
3
4

但我希望它显示:

4
3
1
0

所以,我该怎么办?

11 个答案:

答案 0 :(得分:32)

迭代订单键是任意的。他们按顺序排列只是巧合。

>>> a = {0:'000000',1:'11111',3:'333333',4:'444444'}
>>> a.keys()
[0, 1, 3, 4]
>>> sorted(a.keys())
[0, 1, 3, 4]
>>> reversed(sorted(a.keys()))
<listreverseiterator object at 0x02B0DB70>
>>> list(reversed(sorted(a.keys())))
[4, 3, 1, 0]

答案 1 :(得分:13)

字典是无序的,因此您无法撤消它们。当前输出的顺序是任意的。

那就是说,你当然可以订购钥匙:

for i in sorted(a.keys(), reverse=True):
    print a[i];

但这会为您提供排序键的相反顺序,而不一定是键的相反顺序。即如果你的字典是:

,它不会给你1 0 3
a = {3:'3', 0:'0', 1:'1'}

答案 2 :(得分:9)

尝试:

for i in sorted(a.keys(), reverse=True):
    print i

答案 3 :(得分:4)

Python词典没有任何与它们相关联的“顺序”。 dict打印相同的顺序只是一个“巧合”。无法保证字典中的项目以任何顺序出现。

如果您想处理订购,则需要将字典转换为列表。

a = list(a) # keys in list
a = a.keys() # keys in list
a = a.values() # values in list
a = a.items() # tuples of (key,value) in list

现在您可以将列表正常排序,例如a.sort()并将其反转,例如a.reverse()

答案 4 :(得分:4)

Python dict没有在2.x中排序。但是在3.1中有一个有序的dict实现。

答案 5 :(得分:1)

for i in reversed(sorted(a.keys())):
    print i

答案 6 :(得分:1)

如果要保留插入顺序而不是字母顺序,则可以使用:

dict(list(your_dict.keys())[::-1])

或者整个字典:

dict(list(your_dict.items())[::-1])

答案 7 :(得分:0)

由于 Python 3.7 dict保留顺序,这意味着您现在可以执行以下操作:

my_dict = {'a': 1, 'c': 3, 'b': 2}

for k in reversed(my_dict.keys())):
    print(k)

结果:

b
c
a

Python 3.8 起,内置reversed()也接受字典,因此您可以使用:

for k in reversed(my_dict):
    print(k)

答案 8 :(得分:0)

在我使用的Python 3.6中,我借助功能更新反转了键的顺序及其各自的值。

original_dict={'A':0,'C':2,'B':1}
new_dict={}
for k,v in original_dict.items():
    dict_element={k:v}
    dict_element.update(new_dict)
    new_dict=dict_element

print(new_dict)

它应该打印出来:

{'B':1,'C':2,'A':0}

我的2美分。

答案 9 :(得分:0)

如果您有这样的字典

{'faisal2': 2, 'umair': 2, 'fais': 1, 'umair2': 1, 'trending': 2, 'apple': 2, 'orange': 2}

您想使用以下反向字典:

dict(sorted(counts.items(), key=lambda item: item[1],reverse=True))

输出将是:

{'faisal2': 2, 'umair': 2, 'trending': 2, 'apple': 2, 'orange': 2, 'fais': 1, 'umair2': 1}

答案 10 :(得分:-1)

尝试一下,

输入::a = {0:'000000',1:'11111',3:'333333',4:'444444'}

  

[x代表x在sorted(a.keys(),reverse = True)]中的

输出:[4、3、1、0]