在嵌套字典中求和值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在嵌套字典中求和值相关的知识,希望对你有一定的参考价值。

对不起,我没有说清楚我的问题。我有一个变量x,我一直在迭代,我想在字典中包含x及其相应的子字典。

例如,x表示公交车站号。 6号公交车站距离公交车起点站的距离为1,距离公交车站的最后一站距离为2。

由于我不知道我在任何时间在哪个公交车站,我没有在字典中的所有信息。

我想从一个空字典开始,迭代地更新不同的电台距离信息。

d1={}

d1 = {1: {'a': variable1, 'b': variable2}, 2: {'a': variable3, 'b': variable4}}

我想通过添加子字典中的值('a'和'b'的值的总和)将一个键:'c':'value'的值对插入d1,如下所示。

d1= {1: {'a': 11, 'b': 22, 'c': 'value'}, 2: {'a': 456, 'b': 789, 'c': 'value'}}

我想要公交车站的每个'c'的值

value = variable1 + variable2
value = variable3 + variable4

我希望我现在能够更好地澄清我的问题。这是我关于stackoverflow的第一个问题,我认为我没有清楚地说明我的问题。谢谢你的回复。

答案

建立你几乎得到的东西..

d1[1]['c'] = d1[1]['a'] + d1[1]['b']
d1[2]['c'] = d1[2]['a'] + d1[2]['b']

这不是pythonic的做事方式(Ryan Stein的答案是),其他答案是。但这显示了另一种访问字典中值的方法。

另一答案

您可以尝试使用Python3:

d1= {1: {'a': 14, 'b': 16}, 2: {'a':15,  'b': 15}}
new_data = {a:{**{c:d for c, d in b.items()}, **{'c':sum(b.values())}} for a, b in d1.items()}

输出:

{1: {'a': 14, 'b': 16, 'c': 30}, 2: {'a': 15, 'b': 15, 'c': 30}}
另一答案

如果您希望每个词典条目的键'a''b'总和为'c'的键,那么for循环就足以完成性和可读性。

d1 = {1: {'a': 11, 'b': 22}, 2: {'a': 456, 'b': 789}}

for item in d1.values():
    item['c'] = item['a'] + item['b']


print(d1)

{1: {'a': 11, 'b': 22, 'c': 33}, 2: {'a': 456, 'b': 789, 'c': 1245}}

另一答案

迭代dict。在内部dict对象中添加新键。

for key in d1:
    d1.get(key)['c'] = sum(d1.get(key).values())
另一答案
d1= {1: {'a': 11, 'b': 22, 'c': 'value'}, 2: {'a': 456, 'b': 789, 'c': 'value'}}

# d1[1]['c']=33
# d1[2]['c']=1245

for numbers in d1:
    total = d1[numbers]["a"] + d1[numbers]["b"]
    d1[numbers]["c"] = total

print(d1[1]["c"])
print(d1[2]['c'])
另一答案

您可以通过列表理解和总和来实现,

v1, v2, v3, v4 = 10, 5, 2, 3
d1 = {1: {'a': v1, 'b': v2}, 2: {'a': v3, 'b': v4}}

[d1[k].update({'c': sum(v.values())}) for k,v in d1.items()]

print(d1) # {1: {'a': 10, 'c': 15, 'b': 5}, 2: {'a': 2, 'c': 5, 'b': 3}}
另一答案

如果已知dict只有两级,则可以使用理解。

{k: dict(zip(v.keys() + ['c'], v.values() + [sum(v.values())])) for k,v in d1.items()}

以上是关于在嵌套字典中求和值的主要内容,如果未能解决你的问题,请参考以下文章

将一个嵌套字典中的选择项追加到另一个

嵌套字典。合并公共键并将值附加到列表中。 0 值未附加。里面的代码

如何对字典中的所有值求和?

在Python词典列表中求和值

Python snippet(代码片段)

如何在嵌套字典中查找所有出现的键,同时跟踪外部字典键值?