Voici mon code:
a = {0:'000000',1:'11111',3:'333333',4:'444444'}
for i in a:
print i
ça montre:
0
1
3
4
mais je veux qu'il montre:
4
3
1
0
alors qu'est-ce que je peux faire?
Les clés de commande sont itérées dans est arbitraire. Ce n'était qu'une coïncidence qu'ils étaient classés par ordre.
>>> 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]
Les dictionnaires ne sont pas classés, vous ne pouvez donc pas les inverser. L'ordre de la sortie actuelle est arbitraire.
Cela dit, vous pouvez bien sûr commander les clés:
for i in sorted(a.keys(), reverse=True):
print a[i];
mais cela vous donne l'ordre inverse des clés triées, pas nécessairement l'ordre inverse des clés comment elles ont été ajoutées. C'est à dire. cela ne vous donnera pas 1 0 3
si votre dictionnaire était:
a = {3:'3', 0:'0', 1:'1'}
Essayer:
for i in sorted(a.keys(), reverse=True):
print i
Python dict n'est pas commandé en 2.x. Mais il y a une implémentation de dict ordonnée dans .1 .
Les dictionnaires Python ne sont associés à aucun "ordre". C'est simplement une "coïncidence" que le dicton imprime le même ordre. Il n'y a aucune garantie que les éléments d'un dictionnaire sortent dans n'importe quel ordre.
Si vous souhaitez gérer la commande, vous devrez convertir le dictionnaire en liste.
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
Vous pouvez maintenant trier la liste normalement, par exemple, a.sort()
et l'inverser également, par exemple, a.reverse()
Depuis Python 3.7 dict ordre de conservation, ce qui signifie que vous pouvez le faire maintenant:
my_dict = {'a': 1, 'c': 3, 'b': 2}
for k in reversed(list(my_dict.keys())):
print(k)
Production:
b
c
a
Depuis Python 3.8 le reversed()
intégré accepte également les dictés, vous pouvez donc utiliser:
for k in reversed(my_dict):
print(k)
for i in reversed(sorted(a.keys())):
print i
essayez,
INPUT: a = {0: '000000', 1: '11111', 3: '333333', 4: '444444'}
[x pour x dans trié (a.keys (), reverse = True)]
SORTIE: [4, 3, 1, 0]
Dans Python 3.6, que j'utilise, j'ai inversé l'ordre des clés avec leurs valeurs respectives à l'aide de la mise à jour de la fonction.
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)
Il devrait imprimer:
{'B':1,'C':2,'A':0}
Mon 2 ¢.