gpt4 book ai didi

python - 将对象附加到子 json 键 PYTHON

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:34 24 4
gpt4 key购买 nike

我试图将循环中的对象附加到 json 对象中创建的两个子键之一。

for agency in q:
dashboard[agency.id]= []
dashboard[agency.id].append({"name": agency.agency.name})
dashboard[agency.id].append({"stats": []})
dashboard[agency.id].append({"users": []})

for row in stats:
if row['is_agency']:
dashboard[row['agency_id']['stats']].append(dict(row))
else:
dashboard[row['agency_id']['users']].append(dict(row))

但它抛出一个错误:

dashboard[row['agency_id']]['users'].append(dict(row))
TypeError: list indices must be integers, not str

如果我删除 ['users'] 或 ['stats'] 键,它会很好地附加到 Agency.id 键。但是当我尝试将其添加为二级 key 时,它会抛出上述错误。

由于 json 对象始终具有 3 个子键(name[0]、stats[1]、users[2]),因此我也尝试过使用:

for row in stats:
if row['is_agency']:
dashboard[row['agency_id']][1].append(dict(row))
else:
dashboard[row['agency_id']][2].append(dict(row))

这会导致以下错误:

dashboard[row['agency_id']][2].append(dict(row))
AttributeError: 'dict' object has no attribute 'append'

最佳答案

您正在混淆对象的类型和方法,正如用户 @Moses Koledoye 所示,如果您这样做:

dashboard[row['agency_id']][1]['stats'].append(row)

一步一步:

row['agency_id'] 是一个 Int,所以

dashboard[row['agency_id']] #has type list

将为您提供列表类型的键row['agency_id']的值

dashboard[row['agency_id']][1] 

为您提供列表位置 1 中的值

`dashboard[row['agency_id']][1]['stats']` #is a List also

最后给你一个统计列表(以它为例),这就是为什么你可以使用append方法:

dashboard[row['agency_id']][1]['stats'].append(row)

关于python - 将对象附加到子 json 键 PYTHON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44230394/

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