我是新手,无法终生解决! 尝试获取具有以下结构的python字典,并列出字典:
json_data = [ {"id": 1,"name": "Meghan"},
{"id": 2,"name": "Julia"},
{"id": 3,"name": "Kevin"}
]
每个词典中我都需要相同的键,并且id的值必须从1到100。如果可能的话,我想动态填充它。
这是我到目前为止尝试过的:
json_data = {}
for i in range(1, 11):
if i not in json_data:
json_data['id'] = i
但是,正如您所看到的,id不断被覆盖并生成如下文件:
{
"id": 10
}
任何在正确方向上的帮助都将很棒!
答案 0 :(得分:1)
你的意思是这样吗?
json_data = []
for i in range(1, 11):
json_data.append({'id': i})
结果:
[{'id': 1},
{'id': 2},
{'id': 3},
{'id': 4},
{'id': 5},
{'id': 6},
{'id': 7},
{'id': 8},
{'id': 9},
{'id': 10}]
答案 1 :(得分:1)
当前代码有两个错误步骤:
if i not in json_data
行仅查看元素
而不是字典中id
键的值。 json_data['id'] = i
行覆盖了字典列表,
带有相同变量名json_data
的字典。下面的代码将解决这两个错误步骤。
json_data = [ {"id": 1,"name": "Meghan"},
{"id": 2,"name": "Julia"},
{"id": 3,"name": "Kevin"}
]
for i in range(1, 11):
if i not in [d['id'] for d in json_data]:
json_data.append({"id": i})
如果在运行上面的代码后要打印json_data
列表,它将输出以下内容:
[{'id': 1, 'name': 'Meghan'}, {'id': 2, 'name': 'Julia'}, {'id': 3, 'name': 'Kevin'}, {'id': 4}, {'id': 5}, {'id': 6}, {'id': 7}, {'id': 8}, {'id': 9}, {'id': 10}]
答案 2 :(得分:0)
我不确定您要问什么。
JSON不会保留其顺序,因此执行此操作的唯一方法是首先遍历列表,找到当前存在的最大ID,然后从那里开始计数。如果您知道永远不会从列表中删除元素,则可以使用列表的长度作为起始索引。或者,您可以使用GUID,该GUID被复制的可能性极低。
将json_data的声明更改为:json_data = []
,然后使用json_data += [{'id': i}]
答案 3 :(得分:0)
我认为您的问题可能是您忘记将其放在列表中:
json_data = [{"id": i} for i in range(1, 11)]