95 votes

Dernière touche dans le dictionnaire Python

J'ai du mal à comprendre quelle serait la syntaxe de la dernière clé d'un dictionnaire Python. Je sais que pour une liste Python, on peut dire ceci pour désigner la dernière :

list[-1]

Je sais également que l'on peut obtenir une liste des clés d'un dictionnaire de la manière suivante :

dict.keys()

Cependant, lorsque j'essaie d'utiliser le code logique suivant, cela ne fonctionne pas :

dict.keys(-1)

Il est dit que les clés ne peuvent pas prendre d'arguments et 1 est donné. Si keys ne peut pas prendre d'arguments, alors comment puis-je indiquer que je veux la dernière clé de la liste ?

Je pars du principe que les dictionnaires Python sont classés dans l'ordre dans lequel les éléments sont ajoutés au dictionnaire, l'élément le plus récent étant le dernier. Pour cette raison, je voudrais accéder à la dernière clé du dictionnaire.

On me dit maintenant que les clés du dictionnaire ne sont pas dans l'ordre en fonction de la date à laquelle elles ont été ajoutées. Comment pourrais-je alors choisir la clé la plus récemment ajoutée ?

6voto

0x90 Points 8193
sorted(dict.keys())[-1]

Dans le cas contraire, le keys est juste une liste non ordonnée, et le "dernier" n'a pas de sens, et peut même être différent sur diverses versions de python.

Peut-être que vous voulez regarder dans OrderedDict .

5voto

Eric Cross Points 49

Il y a absolument de très bonnes raisons de vouloir la dernière clé d'un OrderedDict. J'utilise un OrderedDict pour lister mes utilisateurs lorsque je les édite. J'utilise des appels AJAX pour mettre à jour les permissions des utilisateurs et pour ajouter de nouveaux utilisateurs. Puisque l'AJAX se déclenche lorsqu'une permission est vérifiée, je veux que mon nouvel utilisateur reste à la même position dans la liste affichée (dernière) pour des raisons de commodité jusqu'à ce que je recharge la page. Chaque fois que le script s'exécute, il réorganise le dictionnaire des utilisateurs.

C'est tout bon, pourquoi avoir besoin de la dernière entrée ? En effet, lorsque j'écris des tests unitaires pour mon logiciel, je voudrais confirmer que l'utilisateur reste dans la dernière position jusqu'à ce que la page soit rechargée.

dict.keys()[-1]

Exécute cette fonction parfaitement (Python 2.7).

1voto

Matheus Points 11

Vous pouvez faire une fonction comme celle-ci :

def getLastItem(dictionary):
    last_keyval = dictionary.popitem()
    dictionary.update({last_keyval[0]:last_keyval[1]})
    return {last_keyval[0]:last_keyval[1]}

Ceci ne change pas le dictionnaire original ! Cela se produit parce que la fonction popitem() renvoie un tuple et que nous pouvons l'utiliser pour nous favoriser !

1voto

rahul4data Points 111

Il existe un besoin réel d'obtenir le dernier élément d'un dictionnaire, par exemple pour confirmer si le dernier élément a été ajouté à l'objet du dictionnaire ou non.

Nous devons convertir les clés du dictionnaire en un objet liste, et utiliser un index de -1 pour imprimer le dernier élément.

mydict = {'John':'apple','Mat':'orange','Jane':'guava','Kim':'apple','Kate': 'grapes'}

mydict.keys()

sortie : dict_keys(['John', 'Mat', 'Jane', 'Kim', 'Kate'])

list(mydict.keys())

sortie : ['John', 'Mat', 'Jane', 'Kim', 'Kate']

list(mydict.keys())[-1]

sortie : 'Kate'

1voto

smart dev Points 11

Ceci retournera le dernier élément du dictionnaire :

dictObj[len(dictObj.keys()) - 1]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X