我正在尝试从 response>0>startXI>(0,1,2,3,4...)>player>name
和 response>1>startXI>(0,1,2,3,4...)>player>name
的 JSON 文件创建一个列表。我尝试了下面的代码,但出现错误。
代码:
with open("Files/lineups.json", 'r') as f:
data = json.load(f)
home = []
away_lineup = []
for item in data:
home.append(item['startXI']['name'])
print(home)
JSON 文件:
{
"get":"fixtures\/lineups",
"parameters":{
"fixture":"599120"
},
"errors":[
],
"results":2,
"paging":{
"current":1,
"total":1
},
"response":[
{
"team":{
"id":3573,
"name":"Gazi\u015fehir Gaziantep",
"logo":"https:\/\/media.api-sports.io\/football\/teams\/3573.png"
},
"formation":"5-4-1",
"startXI":[
{ "player":{ "id":61950, "name":"G\u00fcnay G\u00fcven\u00e7", "number":1, "pos":"G" } },
{ "player":{ "id":61953, "name":"O\u011fuz Ceylan", "number":17, "pos":"D" } },
{ "player":{ "id":19695, "name":"Pawe\u0142 Olkowski", "number":16, "pos":"D" } },
{ "player":{ "id":21487, "name":"Papy Djilobodji", "number":3, "pos":"D" } },
{ "player":{ "id":2366, "name":"Alin To\u0219ca", "number":6, "pos":"D" } },
{ "player":{ "id":2151, "name":"G\u00fcray Vural", "number":11, "pos":"D" } },
{ "player":{ "id":30412, "name":"Kevin Mirallas", "number":27, "pos":"M" } },
{ "player":{ "id":61971, "name":"Jefferson", "number":8, "pos":"M" } },
{ "player":{ "id":109744, "name":"Amedej Vetrih", "number":74, "pos":"M" } },
{ "player":{ "id":25921, "name":"Alexandru Maxim", "number":44, "pos":"M" } },
{ "player":{ "id":19430, "name":"Nouha Dicko", "number":94, "pos":"F" } }
],
"substitutes":[
{ "player":{ "id":61982, "name":"\u00c7a\u011flar \u015eahin Akbaba", "number":25, "pos":"G" } },
{ "player":{ "id":43016, "name":"J\u00fanior Morais", "number":13, "pos":"D" } },
{ "player":{ "id":62079, "name":"Ula\u015f Zengin", "number":4, "pos":"D" } },
{ "player":{ "id":163188, "name":"Mirza Cihan", "number":26, "pos":"M" } },
{ "player":{ "id":40587, "name":"Zvonimir Ko\u017eulj", "number":20, "pos":"M" } },
{ "player":{ "id":25219, "name":"Cenk \u015eahin", "number":77, "pos":"M" } },
{ "player":{ "id":46885, "name":"Andr\u00e9 Sousa", "number":28, "pos":"M" } },
{ "player":{ "id":41216, "name":"Osama Rashid", "number":32, "pos":"M" } },
{ "player":{ "id":50127, "name":"Bilal Ba\u015fa\u00e7\u0131ko\u011flu", "number":14, "pos":"F" } },
{ "player":{ "id":61972, "name":"Kenan \u00d6zer", "number":7, "pos":"M" } }
],
"coach":{
"id":2205,
"name":"S\u00e1 Pinto"
}
},
{
"team":{
"id":645,
"name":"Galatasaray",
"logo":"https:\/\/media.api-sports.io\/football\/teams\/645.png"
},
"formation":"4-3-3",
"startXI":[
{ "player":{ "id":429, "name":"Fernando Muslera", "number":1, "pos":"G" } },
{ "player":{ "id":438, "name":"Martin Linnes", "number":14, "pos":"D" } },
{ "player":{ "id":446, "name":"Ryan Donk", "number":15, "pos":"D" } },
{ "player":{ "id":433, "name":"Marc\u00e3o", "number":45, "pos":"D" } },
{ "player":{ "id":1160, "name":"Marcelo Saracchi", "number":36, "pos":"D" } },
{ "player":{ "id":445, "name":"Youn\u00e8s Belhanda", "number":10, "pos":"M" } },
{ "player":{ "id":50202, "name":"Taylan Antalyal\u0131", "number":4, "pos":"M" } },
{ "player":{ "id":443, "name":"Emre Akbaba", "number":20, "pos":"M" } },
{ "player":{ "id":50091, "name":"Emre K\u0131l\u0131n\u00e7", "number":54, "pos":"F" } },
{ "player":{ "id":19034, "name":"Ryan Babel", "number":8, "pos":"F" } },
{ "player":{ "id":49859, "name":"Arda Turan", "number":66, "pos":"F" } }
],
"substitutes":[
{ "player":{ "id":50217, "name":"Okan Kocuk", "number":34, "pos":"G" } },
{ "player":{ "id":439, "name":"Christian Luyindama", "number":27, "pos":"D" } },
{ "player":{ "id":67974, "name":"Valentine Ozornwafor", "number":49, "pos":"D" } },
{ "player":{ "id":456, "name":"Henry Onyekuru", "number":7, "pos":"F" } },
{ "player":{ "id":142959, "name":"Muhammed Kerem Akt\u00fcrko\u011flu", "number":18, "pos":"M" } },
{ "player":{ "id":2774, "name":"Oghenekaro Etebo", "number":13, "pos":"M" } },
{ "player":{ "id":431, "name":"\u00d6mer Bayram", "number":19, "pos":"D" } },
{ "player":{ "id":37440, "name":"Halil Dervi\u015fo\u011flu", "number":11, "pos":"F" } }
],
"coach":{
"id":1452,
"name":"F. Terim"
}
}
]
}
错误:
TypeError: string indices must be integers
答案 0 :(得分:1)
您正在查看字典中的错误键。名称在 data['response']['startXI']
试试这个代码:
with open("Pdata.txt", 'r') as f:
data = json.load(f)
home = []
for item in data['response']:
for player in item['startXI']:
home.append(player['player']['name'])
print(home)