【发布时间】:2021-09-25 15:02:17
【问题描述】:
Json 数据如下所示,我必须获取给定数据中的坐标并将其列表打印为:
解:[[2, 3], [4, 1], [8, 4], [3, 2]]
data = '{"foo": {"type": "geo", "coords": [2, 3], "children": [{"type": "geo", "coords": [4 , 1], "children": [{"type": "bar", "children": [{"type": "geo", "coords": [8, 4]}]}, {"type": "geo", "coords": [3, 2]}]}]}}'
我想出了一个解决方案,但它有索引。无论dict的结构是什么,我都想要一些适用于每种情况的通用解决方案。可能吗?我是的,然后如何?
我的解决方案是:
def fun(data):
coords_list = list()
data = json.loads(data)
for k in data:
if data[k].get('coords') is not None:
coords_list.append(data[k]['coords'])
if data[k].get('children') is not None:
if isinstance(data[k].get('children'), list):
coords = data[k].get('children')[0].get('coords')
coords_list.append(coords)
if isinstance(data[k].get('children')[0].get('children'), list):
coords = data[k].get('children')[0].get('children')[0].get('children')[0].get('coords')
coords_list.append(coords)
coords = data[k].get('children')[0].get('children')[1].get('coords')
coords_list.append(coords)
return coords_list
【问题讨论】:
-
你的意思是“在每种情况下都有效”?如果我通过
{"user": "chirag", "seven": [1,2,3,4,5,6,7]}它应该返回[[2, 3], [4, 1], [8, 4], [3, 2]]?
标签: python json list dictionary data-structures