Votre idée est bonne, mais l'itérateur par défaut ne porte que sur les clés, de sorte que votre exemple ne renverra que la dernière clé. Ce que vous voulez en fait, c'est :
class MyOrderedDict(OrderedDict):
def last(self):
return list(self.items())[-1]
Cela donne le (key, value)
et non seulement les clés, comme vous le souhaitiez.
Notez que sur les versions de Python antérieures à la version 3.x, OrderedDict.items()
renvoie une liste, vous n'avez donc pas besoin de l'option list()
mais les versions ultérieures renvoient un objet de vue dictionnaire Vous le ferez.
Edit : Comme indiqué dans les commentaires, l'opération la plus rapide est à faire :
class MyOrderedDict(OrderedDict):
def last(self):
key = next(reversed(self))
return (key, self[key])
Bien que je doive admettre que je trouve cela plus laid dans le code (je n'ai jamais aimé obtenir la clé puis faire x[key]
pour obtenir la valeur séparément, je préfère obtenir la valeur du (key, value)
tuple) - en fonction de l'importance de la vitesse et de vos préférences, vous pouvez choisir la première option.