问题
This is my code :
a = {0:'000000',1:'11111',3:'333333',4:'444444'}
for i in a:
print i
it shows:
0
1
3
4
but I want it to show:
4
3
1
0
so, what can I do?
回答1:
The order keys are iterated in is arbitrary. It was only a coincidence that they were in sorted order.
>>> 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]
回答2:
Dictionaries are unordered so you cannot reverse them. The order of the current output is arbitrary.
That said, you can order the keys of course:
for i in sorted(a.keys(), reverse=True):
print a[i];
but this gives you the reverse order of the sorted keys, not necessarily the reverse order of the keys how they have been added. I.e. it won't give you 1 0 3
if your dictionary was:
a = {3:'3', 0:'0', 1:'1'}
回答3:
Try:
for i in sorted(a.keys(), reverse=True):
print i
回答4:
Python dict is not ordered in 2.x. But there's an ordered dict implementation in 3.1.
回答5:
Python dictionaries don't have any 'order' associated with them. It's merely a 'coincidence' that the dict is printing the same order. There are no guarantees that items in a dictionary with come out in any order.
If you want to deal with ordering you'll need to convert the dictionary to a list.
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
Now you can sort the list as normal, e.g., a.sort()
and reverse it as well, e.g., a.reverse()
回答6:
for i in reversed(sorted(a.keys())):
print i
回答7:
just try,
INPUT: a = {0:'000000',1:'11111',3:'333333',4:'444444'}
[x for x in sorted(a.keys(), reverse=True)]
OUTPUT: [4, 3, 1, 0]
回答8:
Since Python 3.7 dicts preserve order, which means you can do this now:
my_dict = {'a': 1, 'c': 3, 'b': 2}
for k in reversed(list(my_dict.keys())):
print(k)
Output:
b
c
a
Since Python 3.8 the built-in reversed()
accepts dicts as well, thus you can use:
for k in reversed(my_dict):
print(k)
来源:https://stackoverflow.com/questions/5455606/how-to-reverse-order-of-keys-in-python-dict