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

问题描述 投票:19回答:7

这是我的代码:

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

for i in a:
    print i

表明:

0
1
3
4

但我想要它显示:

4
3
1
0

那么,我该怎么办?

python dictionary reverse
7个回答
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]

14
投票

字典是无序的,所以你不能反转它们。当前输出的顺序是任意的。

也就是说,您当然可以订购钥匙:

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

但是这会给出排序键的相反顺序,而不一定是键的相反顺序。即如果你的字典是:它不会给你1 0 3

a = {3:'3', 0:'0', 1:'1'}

10
投票

尝试:

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

4
投票

Python字典不是在2.x中订购的。但是在3.1中有一个有序的dict实现。


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()


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

-1
投票

试一试,

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

[x for x in sorted(a.keys(),reverse = True)]

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

© www.soinside.com 2019 - 2024. All rights reserved.