首页 > 解决方案 > 如何在 Python 中选择字典的常用键和求和值?

问题描述

我有一个嵌套字典列表,我想选择 key= 的 key:value 对,value并对所有值求和。我怎么能用一行代码做到这一点?

[{'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}}}]

我可以选择键:

[[d[i].keys() for i in [k for k, v in d.items()]]]

但我无法更进一步。

标签: python

解决方案


我相信这就是你要找的。

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

这将执行列表推导,然后总结所有值。它首先遍历每个级别('default''basic''expert'),然后遍历它的每个字母对('AA''BB'等)。


推荐阅读