遍历列表并按位置从嵌套字典返回值

时间:2018-09-07 08:43:01

标签: python json list dictionary

假设我有一个词典列表

meta_list = [
    {"id": 9, "name": "Tennis", "type": "SPORT", "url-name": "tennis"}, 
    {"id": 410468520880009, "name": "Live Betting", "type": "OTHER", "url-name": "live-betting"},
    {"id": 423407498380010, "name": "China", "type": "COUNTRY", "url-name": "china"},
    {"id": 613128412140012, "name": "September 7th 2018", "type": "DATE", "url-name": "september-7th-2018"},
    {"id": 643136938410012, "name": "QF", "type": "OTHER", "url-name": "qf"},
    {"id": 899076982160041, "name": "Zhangjiagang ATP Challenger", "type": "COMPETITION", "url-name": "zhangjiagang-atp-challenger"}
]

我想做的是在第六本字典中提取“名称”的值,

for i in meta_list:
    event_name = i['name'][6]
    print(event_name)

我的列表索引超出范围错误。 您如何提取姓名 “名称”:“张家港ATP挑战者”, 来自meta_list?

3 个答案:

答案 0 :(得分:1)

您可以进行python索引编制:

meta_list[5]['name']

还要注意,python索引从零开始。

说明:

  1. 获取meta_list的第六(第五个)元素

  2. 获取'name'

  3. 是的,您完成了

您的代码无法正常工作,因为您在meta_list上进行了迭代,然后获得了'name'字典的i键的第六个字符

最后的输出是:

Zhangjiagang ATP Challenger

答案 1 :(得分:1)

让我们一步一步地说明您:

  • 您应该首先获取列表meta_listmeta_list[5]的第6个元素(因为第6个元素的索引为5,在Python中从0开始索引):您将获得一个字典
  • 然后您应该通过'name'获取与此字典中的键meta_list[5]['name']关联的值
  • 您就完成了!

解决方案是:

print(meta_list[5]['name'])   # Zhangjiagang ATP Challenger

对于无效的原始代码,语句for i in meta_list遍历meta_list的每个元素,因此遍历每个字典。当您执行event_name = i['name'][6]时,您尝试获取与name键相关联的值的第7个字符,这会引起错误,因为“ Tennis”(在第一个词典中)短于7个字符。错误IndexError: string index out of range很明显。

答案 2 :(得分:0)

'i'引用字典中的每个项目。为了访问键“名称”的值,请使用i ['名称']:

for i in meta_list:
    event_name = i['name']
    print(event_name)
相关问题