【问题标题】:Python Group by more than one keys in List of Dictionary [closed]Python按字典列表中的多个键分组[关闭]
【发布时间】:2014-12-09 11:42:40
【问题描述】:

我有这样的字典列表:

[ {'price': 100,  'product_id': 30089, 'grade_id': 24, 'qty': 1.0},   
  {'price': 200, 'product_id': 30089, 'grade_id': 22, 'qty': 1.0},    
   {'price': 100,  'product_id': 30089, 'grade_id': 24, 'qty': 5.0},   
   {'price': 300, 'product_id': 30993, 'grade_id': 22, 'qty': 1.0} ]

现在我想通过 2 个键(product_id 和grade_id)按此列表进行分组,最终结果将是一个新列表,如:

[ {'price': 200,  'product_id': 30089, 'grade_id': 24, 'qty': 6.0},
  {'price': 200, 'product_id': 30089, 'grade_id': 22, 'qty': 1.0}, 
  {'price': 300, 'product_id': 30993, 'grade_id': 22, 'qty': 1.0}]

【问题讨论】:

  • 请提供您拥有的任何相关代码。
  • 为什么突然出现6.0的qty??我正在查看您的输入和输出,但无法弄清楚您打算做什么。
  • 6.0 来自 1.0 + 5.0(同样的价格是 200 -> 100 + 100)。
  • @runDOSrun:我想按“Product_id”和“grade_id”字段分组。由于 product_id 和 'grade_id' 字段在第一个和第三个元素中是相同的,它应该总结 Qty & Price 字段值

标签: python list dictionary group-by


【解决方案1】:
l=[ {'price': 100,  'product_id': 30089, 'grade_id': 24, 'qty': 1.0},   
   ...:   {'price': 200, 'product_id': 30089, 'grade_id': 22, 'qty': 1.0},    
   ...:    {'price': 100,  'product_id': 30089, 'grade_id': 24, 'qty': 5.0},   
   ...:    {'price': 300, 'product_id': 30993, 'grade_id': 22, 'qty': 1.0} ]

d={}

for x in l:
   ...:     p_id = x['product_id']
   ...:     g_id = x['grade_id']
   ...:     key = str(p_id) + '_' + str(g_id)
   ...:     if not key in d:
   ...:         d[key] = {'price': x['price'] , 'product_id': p_id , 'grade_id': g_id, 'qty': x['qty']}
   ...:     else:
   ...:         d[key]['price'] += x['price']
   ...:         d[key]['qty'] += x['qty']

l1 = [d[x] for x in d]

l1

[{'grade_id': 22, 'price': 200, 'product_id': 30089, 'qty': 1.0},
 {'grade_id': 22, 'price': 300, 'product_id': 30993, 'qty': 1.0},
 {'grade_id': 24, 'price': 200, 'product_id': 30089, 'qty': 6.0}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2019-06-29
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多