Site original : Sam & Max: Python, Django, Git et du cul
collections.OrderedDict
est une structure de données que j’utilise de plus en plus, surtout que sa réécriture en C en 3.5 lui donne des performances décentes.
Néanmoins, il n’y a pas dans l’API de moyen de récupérer le premier ou le dernier élément inséré dans dico. Il y a bien popitem()
, mais ça retire l’élément du dictionnaire, et c’est pas forcément ce qu’on veut.
Heureusement OrderedDict
est un itérable, et implémente __reversed__
, et on peut donc utiliser les outils suivant our récupérer les extrémités avec une perf 0(1):
>>> from collections import OrderedDic >>> d = OrderedDict.fromkeys('azerty') >>> next(iter(d.items())) # premier élément 'a' >>> next(reversed(d.items())) # dernier élément 'y' |
Après l’implémentation de OrderedDict
reste une liste doublement chainée, et on ne peut donc pas récupérer un élément à un index arbitraire sans le parcourir à la main…