基于公共元素重建python数组

2024-09-28 01:27:51 发布

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

我试图创建一个字典列表,对给定数据集中的公共值进行分组。数据格式如下

data = [{"CustName":"customer1", "PartNum":"part1"},
{"CustName":"customer2", "PartNum":"part2"}, 
{"CustName":"customer1", "PartNum":"part3"}, 
{"CustName":"customer2", "PartNum":"part4"}]

我想要的是

cleanedData = [
{"CustName":"customer1", "parts":[{"PartNum":"part1"}, {"PartNum":"part3"}]},
{"CustName":"customer2", "parts":[{"PartNum":"part2"}, {"PartNum":"part4"}]}]

我尝试的工作方式需要几个循环,看起来很难看,感觉不太像Python。我也觉得这个比例不会很好。目前,输入数据很小——少于100个元素,但可能有数千个元素,因此循环中的多个循环似乎效率低下。你知道吗

data = [{"CustName":"customer1", "PartNum":"part1"},
{"CustName":"customer2", "PartNum":"part2"}, 
{"CustName":"customer1", "PartNum":"part3"}, 
{"CustName":"customer2", "PartNum":"part4"}]

customers = []
cleanedData = []
for d in data:
    if d["CustName"] not in customers:
        customers.append(d["CustName"])

for c in customers:
    parts = []
    for d in data:
        if d["CustCode"] == c:
            parts.append(d)
    cust = {"CustName":c}
    cust.update({"parts":parts})
    cleanedData.append(cust)

有人能提供一个简单的方法来帮助我们吗?是否有一个内置函数可以帮助处理这种数据操作?你知道吗


Tags: 数据infordatapartspart2part1customers
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:51

您可以使用^{}。你知道吗

d = defaultdict(list)
for item in data:
    d[item['CustName']].append({'PartNum': item['PartNum']})
print(d)

如果您希望它出现在列表中,还可以选择以下列表:

print([{'CustName': key, 'parts': value} for key, value in d.items()])    

相关问题 更多 >

    热门问题