求和di的嵌套键值

2024-04-19 20:42:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我在Python2.7中的示例词典:

sample = {'T1': {'P1': 20, 'P2': 100}, 'T2': {'P1': 60, 'P2': 50}}

我试图用键“P1”和“P2”对所有值求和,得到如下结果:

^{pr2}$

我该怎么做?在

非常感谢。在


Tags: sample示例词典t1p2p1t2pr2
2条回答

你可以用

>>> d = {'T1': {'P1': 20, 'P2': 100}, 'T2': {'P1': 60, 'P2': 50}}
>>> map(sum, zip(*[x.values() for x in d.values()]))
[150, 80]

这将首先计算innner dicts,然后取出它们的值并将它们压缩到一起,最后求出它们的总和。在

或者,定义自定义函数并使用它:

^{pr2}$

从你问题上的标签来看,你似乎在寻找一个列表理解来完成这个任务。通常情况下,它们可能有点难以阅读,但这里有一个:

from collections import Counter

sample = {'T1': {'P1': 20, 'P2': 100}, 'T2': {'P1': 60, 'P2': 50}}

reqResult = [v[1] for v in sorted(reduce(lambda c, d: (c.update(d), c)[1],
                                         sample.values(), Counter()).items())]

print reqResult  #  > [80, 150]

相关问题 更多 >