252 votes

Dictionnaire : Obtenir une liste de valeurs pour une liste de clés

Existe-t-il un moyen intégré/rapide d'utiliser une liste de clés dans un dictionnaire pour obtenir une liste d'éléments correspondants ?

Par exemple, j'ai :

>>> mydict = {'one': 1, 'two': 2, 'three': 3}
>>> mykeys = ['three', 'one']

Comment puis-je utiliser mykeys pour obtenir les valeurs correspondantes dans le dictionnaire sous forme de liste ?

>>> mydict.WHAT_GOES_HERE(mykeys)
[3, 1]

-2voto

wjandrea Points 1176

Si vous vous retrouvez à faire cela souvent, vous pourriez sous-classer dict pour prendre une liste de clés et retourner une liste de valeurs.

>>> d = MyDict(mydict)
>>> d[mykeys]
[3, 1]

Voici une mise en œuvre de démonstration.

class MyDict(dict):
    def __getitem__(self, key):
        getitem = super().__getitem__
        if isinstance(key, list):
            return [getitem(x) for x in key]
        else:
            return getitem(key)

Sous-classement dict nécessite un peu plus de travail et vous voudrez probablement mettre en œuvre .get() , .__setitem__() , et .__delitem__() entre autres.

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