我仍在学习python,并尝试从看起来像JSON的数据中解析数据
{"297050": [[12, 137], [193, 776]], "297056": [[12, 203]]
但是我找不到像我一样的方式来阅读它
对于条目297050,这是列表[12,137],[193,776] 对于条目297056,这是列表[12,203]
我尝试过类似的事情
import json
from pprint import pprint
input_file = open ('file_JSON.txt')
json_array = json.load(input_file)
store_list = []
for obj in json_array :
print obj,json_array[obj]
这给了我obj和每个数组
297050 [[12,137],[193,776]]
但是我实际上希望能够打印出现在其中的每个元素,例如json_array [obj] [0] ... etc
答案 0 :(得分:1)
您可能应该使用嵌套的for循环。您应该打印什么内容取决于您希望输出的外观..但是您可以尝试以下方法:
#!/usr/bin/env python3
import json
data = '{"297050": [[12, 137], [193, 776]], "297056": [[12, 203]]}'
data = json.loads(data)
for k, v in data.items():
print(k)
for list_of_ints in v:
for integer in list_of_ints:
print(integer)
结果:
297050
12
137
193
776
297056
12
203
说明:
我们加载示例json,然后使用items
遍历键值对。现在我们的键在k
中,最外面的列表在v
中。 v
是一个列表,也是一个列表的列表..因此我们将其迭代为list_of_ints
。最后,我们遍历这些列表中的每一个,并在运行时打印出最里面的整数。
如果您想要的输出是这样的:
对于条目297050,这是列表[12,137],[193,776]对于条目297056,这是列表[12,203]
然后我们可以稍微修改一下脚本..并摆脱很多循环。
#!/usr/bin/env python3
import json
output = "For entry {} this is the list {}"
data = '{"297050": [[12, 137], [193, 776]], "297056": [[12, 203]]}'
data = json.loads(data)
for k, v in data.items():
lists_with_commas = ", ".join([str(x) for x in v])
print(output.format(k, lists_with_commas), end=" ")
输出
For entry 297050 this is the list [12, 137], [193, 776] For entry 297056 this is the list [12, 203]
说明:
我们使用模板字符串。.它有{}
到我们要放置的内容,以便稍后可以在其上运行.format
。
我们只需要键和最里面的列表。因此,我们只需要一个for
循环。我们确保使用.join
来获得示例中的逗号,并在其中进行列表理解,从而将所有列表转换为v
中的字符串。
答案 1 :(得分:0)
您可以执行此操作。以线性方式使值不在列表中。
from itertools import chain
j = {"297050": [[12, 137], [193, 776]], "297056": [[12, 203]]}
for k in j:
print(k)
print('\t' + ', '.join(map(str, chain(*j[k]))))