【发布时间】:2019-11-08 22:21:50
【问题描述】:
无法解析字典列表、访问每个字典的所有键值对、通过循环以一次处理每个 k-v。
我有一个包含字典列表的 json 文件。 简化形式:
[
{"": "0", "a": "3893", "b": "2389", "c": "1209"},
{"": "1", "a": "4308", "b": "4560", "c": "9127"},
...
]
我想遍历每个字典,并且对于每个键值对(不包括第一个,假设它会因为键为空而被跳过)每次迭代,都可以访问 a,b,c kv 对一个字典,以便单独处理它们。
我试过了:
import json
with open("file.json", "r") as read_file:
data = json.load(read_file)
result_list = []
for d in data:
result_list.append([v for k,v in d.items()])
for k, v in enumerate(result_list.items()):
# process each key-value pair
但我收到以下错误:
Traceback (most recent call last):
File "somescript.py", line 28, in <module>
for k, v in enumerate(result_list.items()):
AttributeError: 'list' object has no attribute 'items'
同时我尝试了:
import json
with open("file.json", "r") as read_file:
data = json.load(read_file)
for i in data:
print(i, data[i])
得到:
Traceback (most recent call last):
File "somescript.py", line 26, in <module>
print(i, dat[i])
TypeError: list indices must be integers or slices, not dict
代码有问题,我还不知道如何实现上面的,可能很简单但我还没有找到。
【问题讨论】:
-
您的数据和代码中存在多个语法错误。请发布您实际测试过的代码。
-
无论如何,假设对您的帖子进行了合理的修复,
result_list是一个列表列表,其中包含每个字典中的值。列表没有items方法。如果你想迭代它,只需删除.items()。 -
字典中的'c'元素没有被
:分隔;你有你一直在使用的代码吗? -
谢谢!是的,有些错误,我做了更正,但使用的数据和代码几乎是原件的精确副本。代码是一对一的。
-
那么,您了解错误消息的含义吗?因为如果你知道一些 Python 词汇,它们就很清楚了。如果没有,你不明白什么?
标签: python json list loops dictionary