Python 3.x 在python中解析嵌套列表列表和Dicts

Python 3.x 在python中解析嵌套列表列表和Dicts,python-3.x,dictionary,nested-lists,Python 3.x,Dictionary,Nested Lists,我正在使用GoogleMapsAPI python客户端获取地理编码数据。api返回一个列表,该列表似乎是列表和dict的列表。下面是一个结果的示例 [[{'address_components': [{'long_name': 'Liverpool', 'short_name': 'Liverpool', 'types': ['locality', 'political']}, {'long_name': 'Merseyside', 'short_name': 'Merseyside',

我正在使用GoogleMapsAPI python客户端获取地理编码数据。api返回一个列表,该列表似乎是列表和dict的列表。下面是一个结果的示例

[[{'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']}]
它持续了一段时间,然后一个新的列表从地址_组件开始往下一点。在每个结果的中间是“代码>位置”:{'LAT':xxx,'LNG’:xxx },< /Cord>< /P>
'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']}]
我试着这样分析:

示例[i]中x的
:
对于x中的t:
打印(t)

这将返回:

address_components
formatted_address
geometry
place_id
types
现在,我的
lat
lng
位于
几何体中,如下所示:

'geometry': {'bounds': {'northeast': {'lat': 53.503907, 'lng': -2.8129382},
 'southwest': {'lat': 53.3204478, 'lng': -3.0191793}}
但如果我尝试将for循环扩展为如下所示:

源代码[i]中x的
:
对于x中的t:
对于t中的z:
打印(z)

它输出:
a
D
D
R
E
s
s
_
C
o
M
P
o
N
E
N
T
s
F
o
R
M
A.
等等这些字符串构成了从x中t的
返回的内容

更新 我试过:

示例[i]中x的
:
对于x中的t:
对于['geometry']中的值:
打印(值)

但这又回来了
geometry
n次

我只想得到
53.4083714
-2.9915726


我意识到我需要你的帮助

在某些字符串中对c执行
时:打印(c)
,只需一次打印
某些字符串
一个字符,每个字符都在自己的行上。相反,您需要以下内容,其中几何体条目的处理基于上面的示例

        if t == 'geometry':
            bnd = t['bounds']
            ne = bnd['northeast']
            sw = bnd['southwest']
            [print('ne', ne['lat'], ne['lng'], 'sw', sw['lat'], sw['lng']
#对于target_query.items()中的键1、值1:
尝试:
对于value1中的实体:
如果存在(实体、指令):
对于键2,entities.items()中的值2:
如果存在(值2,dict):
对于键3,value2.items()中的value3:
如果存在(值3,dict):
对于键4,value3.items()中的value4:
如果存在(值4,dict):
x=value4.get('lat') x=str(x) y=值4。获取('lng')
y=str(y)

请给出您尝试实现此功能的详细说明。谢谢@jornsharpe。这个问题迫使我回头看看我的方法。我在正文中加入了我最富有成效的尝试。我觉得我正在关注这个问题,但我可以破解它。
for t in x
给你钥匙;阅读字典。谢谢@jornsharpe我对字典很熟悉。我的问题是,这组字典嵌套在列表中的特定方式超出了我的解析能力。这就是为什么我要求社区帮助这件事。当我试图进入钥匙时,所有东西都被弄坏了,这意味着我错过了一些东西。谢谢!对此引发了一个有趣的错误:
TypeError。。。2对于x中的t:3如果t=='geometry':--->4 bnd=t['bounds']5 ne=bnd['Northwestern']6 sw=bnd['Southwestern']TypeError:字符串索引必须是整数
任何序列的索引确实必须是整数。但是dict的键可以而且通常是字符串。基于几何体示例,我希望代码片段中的所有下标内容都应该是dict。但我怀疑您可能需要根据实际数据进行调整。这是一个复杂的结构,很难提出问题。