在Python中求多个列表中的同一对象的和

2024-04-30 00:43:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者。如何在多列表Python中求同一对象id的和?我有这个的样本数据。你知道吗

data = [
  [
   {
    'id': 1,
    'count': 10
   },
   {
    'id': 2,
    'count': 20
   },
  ],
  [
   {
    'id': 1,
    'count': 20
   },
   {
    'id': 2,
    'count': 30
   },
  ]
]

如何对相同id的计数求和,以便得到:

data = [
 {
  'id': 1,
  'count': 30
 },
 {
  'id': 2,
  'count': 50
 },
]

Tags: 数据对象id列表datacount计数样本
2条回答

尝试使用熊猫:

import pandas as pd
df = pd.DataFrame(sum(data, [])) # flatten the data
df = df.groupby('id').sum()
d = [{'id': index, 'count': row['count']} for index, row in df.iterrows()]

这不是最佳的解决方案,但确实有效。你知道吗

data = [
  [
   {
    'id': 1,
    'count': 10
   },
   {
    'id': 2,
    'count': 20
   },
  ],
  [
   {
    'id': 1,
    'count': 20
   },
   {
    'id': 2,
    'count': 30
   },
  ]
]
sumofdata = []
doneids = []
for i in data:
    for j in i:
        if j["id"] in doneids:
            for d in sumofdata:
                if d["id"] == j["id"]:
                    d["count"] += j["count"]
                    break
        else:
            doneids.append(j["id"])
            sumofdata.append(j)
print(sumofdata)

相关问题 更多 >