在 Python 中查找嵌套字典值的总和
有时我们需要对嵌套字典值的值求和,因此在此问题陈述中,我们需要使用 Python 查找嵌套字典值的总和。
理解问题
当前的问题是查找嵌套字典中存在的值的总和,我们必须使用 Python 实现代码。因此,嵌套字典是字典中的字典。我们必须找到嵌套的值并将它们相加。
对所有嵌套字典值求和
在这种方法中,我们将使用 for 循环将嵌套字典中存在的所有值相加。
算法
步骤 1 - 定义名为 summation_values 的函数,在此函数中,我们将传递名为 the_dictionary 的嵌套字典作为输入。
步骤 2 - 初始化 sum 变量,我们将在其中存储嵌套字典中存在的所有值的总和。
步骤 3 - 将对嵌套字典中的所有键值对启动循环。然后将启动条件以验证该值是否为数字,然后将该值添加到 sum 变量中。
步骤 4 - 如果整数在嵌套字典中,则递归调用上面创建的函数并将返回值添加到 sum 中。
步骤 5 - 通过返回 sum 的值结束算法。
示例
# 获取值总和的函数
def summation_values(the_dictionary):
sum = 0
for value in the_dictionary.values():
if isinstance(value, int):
sum += value
elif isinstance(value, dict):
sum += summation_values(value)
return sum
# 输入嵌套字典
nested_dict = {
'apple': 10,
'banana': {
'cucumber': 12,
'pineapple': {
'orange': 23,
'mango': 14
}
},
'guava': 16
}
# 传递输入字典并调用函数
output = summation_values(nested_dict)
# 显示输出
print("嵌套字典值的总和:", output)
输出
嵌套字典值的总和:75
复杂度
summation_values 函数的时间复杂度为 O(N),其中 N 是字典中键值对的数量。造成这种复杂性的原因是该函数取决于输入字典的大小。
对具有相同键的嵌套字典值求和
在这种方法中,我们将在嵌套字典中添加具有相同键的值。
算法
步骤 1 - 将嵌套字典初始化为 the_nested_dict。
步骤 2 - 然后我们将初始化空字典以存储具有相同键的总和值。
步骤 3 - 然后将针对 the_nested_dict 的值启动循环。
步骤 4 - 在外循环中,我们将对子字典项启动另一个内循环。
步骤5 − 然后在内循环中,当前项值将添加到 sum_values 字典中的相应键。
步骤 6 − 借助 print() 函数打印更新后的 sum_values 字典。
步骤 7 − 程序执行完成。
示例
# 初始化嵌套字典
the_nested_dict = {
'apple' : {'red' : 4, 'yellow' : 5, 'green' : 8},
'guava' : {'red' : 8, 'white' : 10},
'banana' : {'yellow' : 19, 'green' : 10}
}
#初始化空字典
sum_values = dict()
for subdict in the_nested_dict.values():
for key, elem in subdict.items():
sum_values[key] = elem + sum_values.get(key, 0)
#显示具有相同键的嵌套字典值的总和
print("总和值:" + str(sum_values))
输出
总和值:{'red': 12, 'yellow': 24, 'green': 18, 'white': 10}
复杂度
如果 N 是主字典中的键值对的数量,M 是嵌套字典中的键值对的数量,则时间复杂度为 O(NM)。原因是我们要为每个主字典迭代嵌套字典。
结论
到目前为止,我们已经看到了两种解决这类问题的方法。首先,我们将嵌套字典中存在的所有值加起来,其次,我们只对相同或相同的键值求和。
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

