在 python 中解析嵌套列表和字典
Parse a nested List lists and Dicts in python
我正在使用 google 地图 api python 客户端获取地理编码数据。 api returns 一个看起来是列表和字典列表的列表。这是一个结果的示例。
[[{'address_components': [{'long_name': 'Liverpool',
'short_name': 'Liverpool',
'types': ['locality', 'political']},
{'long_name': 'Merseyside',
'short_name': 'Merseyside',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'England',
'short_name': 'England',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United Kingdom',
'short_name': 'GB',
'types': ['country', 'political']}]
它持续了一段时间,然后一个新列表从 address_components 开始往下一点。每个结果中间是'location':{'lat':xxx, 'lng':xxx},
'location': {'lat': 53.4083714, 'lng': -2.9915726},
'location_type': 'APPROXIMATE',
'viewport': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}}
我正在尝试获取 'lat'
和 lng
的值。
我试过用几种方法来解析它。例如:
example = [[{'address_components': [{'long_name': 'Liverpool',
'short_name': 'Liverpool',
'types': ['locality', 'political']},
{'long_name': 'Merseyside',
'short_name': 'Merseyside',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'England',
'short_name': 'England',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United Kingdom',
'short_name': 'GB',
'types': ['country', 'political']}]
我试过这样解析:
for x in example[i]:
for t in x:
print(t)
这个returns:
address_components
formatted_address
geometry
place_id
types
现在,我的 lat
和 lng
在那个 geometry
中,像这样:
'geometry': {'bounds': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}
但是如果我尝试将 for 循环扩展为如下所示:
for x in source_ll[i]:
for t in x:
for z in t:
print(z)
它输出:
a
d
d
r
e
s
s
_
c
o
m
p
o
n
e
n
t
s
f
o
r
m
a
等等。这些只是构成从 for t in x
.
返回的内容的字符串
更新
我试过了:
for x in example[i]:
for t in x:
for value in ['geometry']:
print(value)
但是这个returns
geometry
n次。
我只想得到53.4083714
和-2.9915726
。
我意识到我需要你的帮助!!
当您执行 for c in some_string: print(c)
时,您只需一次打印 some_string
个字符,每个字符各占一行。相反,您需要类似以下内容,其中几何条目的处理基于您上面的示例。
if t == 'geometry':
bnd = t['bounds']
ne = bnd['northeast']
sw = bnd['southwest']
[print('ne', ne['lat'], ne['lng'], 'sw', sw['lat'], sw['lng']
#for key1, value1 in target_query.items():
尝试:
对于 value1 中的实体:
如果是实例(实体,字典):
对于 entities.items() 中的 key2、value2:
如果是实例(值 2,字典):
对于 value2.items() 中的 key3、value3:
如果是实例(值 3,字典):
对于 key4,value4 在 value3.items():<br>
如果 isinstance(value4, dict):<br>
x = value4.get('lat')
x = 海峡(x)
y = value4.get('lng')
y = str(y)
我正在使用 google 地图 api python 客户端获取地理编码数据。 api returns 一个看起来是列表和字典列表的列表。这是一个结果的示例。
[[{'address_components': [{'long_name': 'Liverpool',
'short_name': 'Liverpool',
'types': ['locality', 'political']},
{'long_name': 'Merseyside',
'short_name': 'Merseyside',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'England',
'short_name': 'England',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United Kingdom',
'short_name': 'GB',
'types': ['country', 'political']}]
它持续了一段时间,然后一个新列表从 address_components 开始往下一点。每个结果中间是'location':{'lat':xxx, 'lng':xxx},
'location': {'lat': 53.4083714, 'lng': -2.9915726},
'location_type': 'APPROXIMATE',
'viewport': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}}
我正在尝试获取 'lat'
和 lng
的值。
我试过用几种方法来解析它。例如:
example = [[{'address_components': [{'long_name': 'Liverpool',
'short_name': 'Liverpool',
'types': ['locality', 'political']},
{'long_name': 'Merseyside',
'short_name': 'Merseyside',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'England',
'short_name': 'England',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United Kingdom',
'short_name': 'GB',
'types': ['country', 'political']}]
我试过这样解析:
for x in example[i]:
for t in x:
print(t)
这个returns:
address_components
formatted_address
geometry
place_id
types
现在,我的 lat
和 lng
在那个 geometry
中,像这样:
'geometry': {'bounds': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}
但是如果我尝试将 for 循环扩展为如下所示:
for x in source_ll[i]:
for t in x:
for z in t:
print(z)
它输出:
a
d
d
r
e
s
s
_
c
o
m
p
o
n
e
n
t
s
f
o
r
m
a
等等。这些只是构成从 for t in x
.
更新 我试过了:
for x in example[i]:
for t in x:
for value in ['geometry']:
print(value)
但是这个returns
geometry
n次。
我只想得到53.4083714
和-2.9915726
。
我意识到我需要你的帮助!!
当您执行 for c in some_string: print(c)
时,您只需一次打印 some_string
个字符,每个字符各占一行。相反,您需要类似以下内容,其中几何条目的处理基于您上面的示例。
if t == 'geometry':
bnd = t['bounds']
ne = bnd['northeast']
sw = bnd['southwest']
[print('ne', ne['lat'], ne['lng'], 'sw', sw['lat'], sw['lng']
#for key1, value1 in target_query.items():
尝试:
对于 value1 中的实体:
如果是实例(实体,字典):
对于 entities.items() 中的 key2、value2:
如果是实例(值 2,字典):
对于 value2.items() 中的 key3、value3:
如果是实例(值 3,字典):
对于 key4,value4 在 value3.items():<br>
如果 isinstance(value4, dict):<br>
x = value4.get('lat')
x = 海峡(x)
y = value4.get('lng')
y = str(y)