技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

在 Python 中查找嵌套记录值的总和

pythonserver side programmingprogramming

问题陈述需要使用 Python 查找嵌套记录值的总和。有时我们需要添加数据中存在的值,因此这种方法很有用,因为记录是使用键更新或操作数据的强大数据集。

理解问题

给定的问题是查找给定记录中的值的加法,因此这里我们将使用嵌套字典作为记录。我们将使用 Python 实现代码。

嵌套字典是字典中的字典。我们必须找到嵌套的值并将它们相加。

算法 - 对记录中存在的所有值求和

  • 步骤 1 - 定义名为 sum_record_values 的函数,在此函数中,我们将传递名为 the_record 的嵌套字典作为输入。

  • 步骤 2 - 初始化 sum 变量,我们将在其中存储嵌套记录中存在的所有值的总和。

  • 步骤 3 - 将针对嵌套记录中的所有键值对启动循环。然后将启动条件以验证该值是否为数字,然后将该值添加到 sum 变量中。

  • 步骤 4 - 如果整数在嵌套记录中,则递归调用上面创建的函数并将返回的值添加到 sum 中。

示例

# 获取值总和的函数
def sum_record_values (the_record):
   sum = 0
   for value in the_record.values():
      if isinstance(value, int):
         sum += value
      elif isinstance(value, dict):
         sum += sum_record_values(value)
   return sum
# 输入嵌套记录
the_record = {
   'A': 1,
   'B': {
      'C': 5,
      'D': {
         'E': 6,
         'F': 5
      }
   },
   'G': 7
}

# 传递输入记录并调用函数
output = sum_record_values(the_record)

# 显示输出
print("The summation of nested record values:", output)

输出

The summation of nested record values: 24

复杂度

上述函数 sum_record_values 的时间复杂度为 O(N),N 是记录中键值对的数量。

算法 - 对记录中相同的键值求和

  • 步骤 1 - 将嵌套记录初始化为 the_record。

  • 步骤 2 - 然后我们将初始化空记录以存储具有相同键的总和值。

  • 步骤 3 - 然后将针对 the_record 的值启动循环。

  • 步骤 4 - 在外循环中,我们将对子记录项启动另一个内循环。

  • 步骤 5 - 然后在内循环中,当前项值将被添加到 sum_values 记录中的相应键。

  • 步骤 6 − 借助 print() 函数打印更新的 sum_values 记录。

示例

# 初始化嵌套记录
the_record = {
   'Vegetable' : {'red' : 4, 'green' : 5, 'yellow' : 8},
   'Fruits' : {'red' : 8, 'yellow' : 10},
   'Dry_fruits' : {'yellow' : 19, 'green' : 10}
}

#将空记录初始化为字典
record_values = dict()
for subdict in the_record.values():
   for key, item in subdict.items():
      record_values[key] = item + record_values.get(key, 0)

#显示具有相同键的嵌套记录值的总和
print("总和值:" + str(record_values))

输出

总和值:{'red': 12, 'green': 15, 'yellow': 37}

复杂度

上述代码查找相同或相同键的总和所需的时间为 O(nm)。其中 n 是外部记录中的键数,m 是内部记录中的键数。

结论

因此,我们已经成功实现了使用 Python 查找嵌套记录值总和的代码。在本文中,我们看到了两种方法,第一种方法是我们将记录中存在的所有值相加,第二种方法中,我们将相同的键值相加。


相关文章