2 votes

Accéder aux valeurs du dictionnaire en utilisant les valeurs de la liste comme clés ultérieures

keys = ['prop1', 'prop2', 'prop3']
dict = { prop1: { prop2: { prop3: True } } }

Comment puis-je obtenir la valeur True de la dictée à l'aide de la liste ?

Ne pas avoir de succès avec

val = reduce((lambda a, b: dict[b]), keys)

mettre à jour :

keys y dict peut être arbitrairement long, mais aura toujours des propriétés/clés correspondantes.

3voto

wim Points 35274

Utilisation d'une boucle :

>>> a = ['prop1', 'prop2', 'prop3'] 
>>> d = {'prop1': {'prop2': {'prop3': True}}}
>>> result = d
>>> for k in a: 
...     result = result[k] 
...
>>> result
True

Utiliser un style fonctionnel :

>>> from functools import reduce
>>> reduce(dict.get, a, d)
True

1voto

Geeocode Points 2450

EDIT : Comme Op. a reformulé sa question, j'ai fait une mise à jour :

En fait, vous n'avez pas besoin de clés pour obtenir "Vrai". Vous pouvez utiliser un récursif pour le faire joliment sans connaître les clés.

d = { 'prop1': { 'prop2': { 'prop3': True } } }

def d_c(dc):
    if isinstance(list(dc.values())[0], dict):
        return d_c(list(dc.values())[0])
    return list(dc.values())[0]

Résultat :

True

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