91 votes

Obtenir un sous-ensemble d'un dictionnaire Python

J'ai un dictionnaire :

{'key1':1, 'key2':2, 'key3':3}

J'ai besoin de passer un sous-ensemble de ce dictionnaire à un code tiers. Il veut seulement un dictionnaire contenant des clés ['key1', 'key2', 'key99'] et s'il obtient une autre clé (par exemple 'key3' ), il explose dans un méchant désordre. Le code en question est hors de mon contrôle et je me retrouve dans une situation où je dois nettoyer mon dictionnaire.

Quelle est la meilleure façon de limiter un dictionnaire à un ensemble de clés ?

Étant donné l'exemple de dictionnaire et les clés autorisées ci-dessus, je veux :

{'key1':1, 'key2':2}

1voto

gty3310 Points 31

Je vois que vous aimez garder les 2 premiers éléments du dict, donc vous pouvez le faire :

>>> {k:a[k] for k in list(a.keys())[:2]}
{'key1': 1, 'key2': 2}

-1voto

theo olsthoorn Points 69

Avec une classe complexe Myclass étant une sous-classe de collections.UserDict . Pour en sélectionner un sous-ensemble, c'est-à-dire conserver toutes les propriétés de son conteneur, il est pratique de définir une méthode, par exemple nommée sub comme ça :

def sub(self, keys):
    subset = Myclass() # no arguments; works if defined with only keyword arguments
    for key in keys:
        subset[key] = self[key]
    return subset

Il est ensuite utilisé comme Myclass.sub([key1, key2 ...] )

0 votes

La réponse n'est pas claire, et ne fonctionne pas. Myclass() s'avère être indéfini. De plus, où donner le dictionnaire original à partir duquel key1, key2 doit être sous-ensemble ?

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