gpt4 book ai didi

python - 根据公共(public)元素重建python数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:41 26 4
gpt4 key购买 nike

我正在尝试创建一个字典列表,将给定数据集中的公共(public)值分组。数据格式如下

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"}]}]

我试图开始工作的方式需要几个循环,看起来很丑,而且感觉不是很 pythonic。我也觉得这不会很好地扩展。目前,输入数据很小 - 不到 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)

有人可以提供帮助并提供更简单的方法吗?是否有有助于此类数据操作的内置函数?

最佳答案

您可以使用 collections.defaultdict .

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()])    

关于python - 根据公共(public)元素重建python数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com