Python 获取json结构中的所有嵌套键

Python 获取json结构中的所有嵌套键,python,json,Python,Json,假设我阅读了下面的json文件 text = "NASCAR" with urllib.request.urlopen(f'https://en.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch=morelike:{text}&format=json') as url: more_like_data = json.loads(url.read().decode()) 我

假设我阅读了下面的json文件

  text = "NASCAR"
  with urllib.request.urlopen(f'https://en.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch=morelike:{text}&format=json') as url:
        more_like_data = json.loads(url.read().decode())
我试图提取查询>>页面>>[随机页码]中包含的每个“标题”,并将其存储在列表中。我的尝试是这样的

  more_like_titles = list([page_number.get('title') for page_number in more_like_data.get('query').get('pages')])

  print(more_like_titles)
我得到了错误

“AttributeError:'str'对象没有属性'get'”

我不知道为什么它会以字符串的形式读取中的值,就像加载的JSON文件一样,它显然是一个字典。请看这里:

{'batchcomplete': '',
 'continue': {'continue': 'gsroffset||', 'gsroffset': 10},
 'query': {'pages': {'147515': {'index': 6,
                                'ns': 0,
                                'pageid': 147515,
                                'title': 'NASCAR Xfinity Series'},
                     '14855318': {'index': 4,
                                  'ns': 0,
                                  'pageid': 14855318,
                                  'title': 'Criticism of NASCAR'},
                     '17138753': {'index': 9,
                                  'ns': 0,
                                  'pageid': 17138753,
                                  'title': 'List of NASCAR drivers who have '
                                           'won in each of top three series'},
                     '2201365': {'index': 5,
                                 'ns': 0,
                                 'pageid': 2201365,
                                 'title': 'Buschwhacker'},
                     '35514289': {'index': 1,
                                  'ns': 0,
                                  'pageid': 35514289,
                                  'title': 'List of female NASCAR drivers'},
                     '40853273': {'index': 7,
                                  'ns': 0,
                                  'pageid': 40853273,
                                  'title': 'Daniel Hemric'},
                     '43410277': {'index': 10,
                                  'ns': 0,
                                  'pageid': 43410277,
                                  'title': '2015 NASCAR Camping World Truck '
                                           'Series'},
                     '47112554': {'index': 8,
                                  'ns': 0,
                                  'pageid': 47112554,
                                  'title': 'Ryan Preece'},
                     '47828021': {'index': 3,
                                  'ns': 0,
                                  'pageid': 47828021,
                                  'title': '2016 NASCAR Xfinity Series'},
                     '5082163': {'index': 2,
                                 'ns': 0,
                                 'pageid': 5082163,
                                 'title': 'NASCAR Whelen Modified Tour'}}}}

有什么想法吗?

当你对列表理解有困难时,把它分解可能是个好主意。也就是说,您的问题是您试图直接迭代字典,这可能会产生一些意外的结果。我已使用内置的python
。items

more_like_titles = list([vals.get('title') for page_number, vals in more_like_data.get('query').get('pages').items()])