我有一个API,其中Iam试图创建一个嵌套的json/dict输出。
API看起来有点像这样:
{
"skuNO": "SK0011 - Green Stator with Terminal Box",
"toStationLocation": "Line 1 - Station 1",
"quantity": "1",
},
{
"skuNO": "SK0011 - Green Stator with Terminal Box",
"toStationLocation": "Line 1 - Station 2",
"quantity": "1",
},
{
"skuNO": "SK0011 - Green Stator with Terminal Box",
"toStationLocation": "Line 1 - Station 2",
"quantity": "3",
},我想要一个有点像这样的输出:
{
"Line 1 - Station 2": {"SK0011": 4}
"Line 1 - Station 1": {"SK0011": 1}
}我用拉链和迪特试了几样东西,但没有取得多大的成功。我最后一次尝试是这样的,我知道这是一次非常糟糕的尝试。但我已经没有选择了。
final_dict = {}
for x in data:
int_sku = []
int_qty = []
int_sku.append(x['skuNO'])
int_qty.append(x['quantity'])
zipped = dict(zip(int_sku, int_qty))
if x['toStationLocation'] not in final_dict:
final_dict[x['toStationLocation']] = zipped
else:
for key,val in final_dict.items():
for k,v in val.items():
print(k,v)
if k == int_sku[0]:
v = int(int_qty[0]) + int(v)注:任何其他选项创建具有这3的唯一性的其他对象也很好,也很受欢迎。
发布于 2022-07-01 19:16:43
final_dict = {}
for data in test_data:
key = data["toStationLocation"]
sku = data["skuNO"].split()[0]
quant = int(data["quantity"])
if key not in final_dict:
final_dict[key] = {sku: quant}
elif sku not in final_dict[key]:
final_dict[key][sku] = quant
else:
final_dict[key][sku] += quant发布于 2022-07-01 19:25:25
下面是另一种方法,它使用default dict简化逻辑并消除if语句:
import collections
final_dict = {}
for datum in data:
line_station = datum["toStationLocation"]
sku = datum["skuNO"].split(" - ")[0]
quantity = int(datum["quantity"])
final_dict.setdefault(line_station, collections.defaultdict(int))
final_dict[line_station][sku] += quantity对于内部字典,我使用一个collections.defaultdict(int),它将在第一次提到它时将sku初始化为0。
https://stackoverflow.com/questions/72833544
复制相似问题