J'ai une liste de dictionnaires imbriqués et je voudrais sélectionner les paires clé: valeur où clé = valeur et additionner toutes les valeurs. Comment pourrais-je faire cela avec une seule ligne de code? [{'default': {'AA': {'Quantity': ...
2 réponses
Je crois que c'est ce que vous recherchez.
lst = [{'default': {'AA': {'quantity': 0.05215832, 'value': 2940.4440669952},
'BB': {'quantity': 493.96434168, 'value': 888.9823555432}},
'basic': {'CC': {'quantity': 911.84309821, 'value': 911.84309821}},
'expert': {'DD': {'quantity': 0.00833, 'value': 0.036579529000000006},
'AA': {'quantity': 0.000823, 'value': 0.303896042},
'RR': {'quantity': 0.000166, 'value': 0.0035026000000000002},
'FF': {'quantity': 0.00183, 'value': 0.057991785}}}]
lst_sum = sum(value['value'] for key in lst[0].keys() for value in lst[0][key].values())
print(lst_sum)
# Prints 4741.6714907044
Cela exécute une compréhension de liste, puis résume toutes les valeurs. Il parcourt d'abord chaque niveau ('default'
, 'basic'
et 'expert'
) puis parcourt chaque paire de lettres ('AA'
, 'BB'
, etc.).
Vous pourriez faire:
input_nested_dict = {'AA': {'quantity': 0.05215832, 'value': 2940.4440669952},
'BB': {'quantity': 493.96434168, 'value': 888.9823555432}}
sum([input_nested_dict[key]['value'] for key in input_nested_dict.keys()])
J'ai supposé sur la base de l'extrait de code de la touche de sélection que vous avez donné que vous travaillez sur une base par dictionnaire et non sur la liste entière à la fois.
Vous pouvez supprimer les crochets pour avoir un générateur au lieu d'une compréhension de liste:
sum(input_nested_dict[key]['value'] for key in input_nested_dict.keys())
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.