【问题标题】:How to sup up rows within a dictionary?如何支持字典中的行?
【发布时间】:2022-11-19 19:06:38
【问题描述】:

我有一本字典:

{"account", "x*", 'amount': 300, 'day': 3, 'month': 'June',
'account': "y*", 'amount': 550, 'day': 9, 'month': 'May',
"account": 'z*', 'amount': -200, 'day': 21, 'month': 'June'
"account" : "g", "amount" : 80" "day" : 10" month" : "May"

如何分别找到 6 月和 5 月每个月的总金额?

我试图分别访问每一行,希望在下面分别获得 Mau 和 June 的总和信息,但它给了我总和

dictionary= sum(d["amount"]
for d in my_dict)

【问题讨论】:

  • 那不是一个有效的 python 字典,所以当解释器不喜欢它时你不会感到惊讶。
  • 这不能存储在一个字典中,你需要一个字典列表或类似的东西
  • 字典中没有“行”。您将它与其他一些数据结构混淆了。
  • 恐怕在这一点上你留下了太多我们无法破译的东西。请发布一些实际上是有效 python 的代码,并创建你的my_dict。您发布的代码片段都不能用 Python 工作。
  • 我同时找到了两个月的总数,我该如何计算不同月份的总数?

标签: python dictionary sum


【解决方案1】:

您可以通过在一行 for-loop 的末尾添加 if 语句来过滤要求和的元素:

sum(d['amount'] for d in my_dict if d['month'] == month)

然后,我们可以将这行代码封装在一个小函数中来计算五月和六月的结果:

my_dict = [{'account': 'x*', 'amount':  300, 'day':  3, 'month': 'June'},
           {'account': 'y*', 'amount':  550, 'day':  9, 'month': 'May' },
           {'account': 'z*', 'amount': -200, 'day': 21, 'month': 'June'},
           {'account': 'g' , 'amount':   80, 'day': 10, 'month': 'May' }]


get_sum  = lambda my_dict, month: sum(d['amount'] for d in my_dict if d['month'] == month)
sum_June = get_sum(my_dict, 'June')
sum_May  = get_sum(my_dict, 'May' )

print('sum_June:', sum_June)
# sum_June: 100

print('sum_May :', sum_May)
# sum_May : 630

附言。最初,字典my_dict 覆盖数据,因为所有内容都存储在同一个对象中。在上面的代码中,my_dict 被分成多行列表以避免此问题。请考虑使用这种方法在您的项目中存储数据——这很常见。

【讨论】:

  • 谢谢你。我尝试运行它,但在控制台中显示“NameError: name 'month' is not defined”。
  • 嗨 @Litriceee,我认为你对 my_dict 的定义是覆盖数据,因为所有内容都存储在同一个字典中。请将我的整个代码复制到您的控制台,谢谢。 (您需要使用列表中的多行来定义my_dict
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
相关资源
最近更新 更多