2016-07-07 5 views
0

Мой json-файл выглядит так, и я пытаюсь получить доступ к данным из него.Индексы списка должны быть целыми числами, а не dict

{ 
"stats": [ 
    { 
     "id": 7, 
     "name": "WarL0cK", 
     "position": "toplane", 
     "playerSlug": "warl0ck", 
     "team": "BKT", 
     "gamesPlayed": 6, 
     "kda": 1.5, 
     "kills": 12, 
     "deaths": 20, 
     "assists": 18, 
     "killParticipation": 0.6666666666666666, 
     "csPerMin": 5.917136743824159, 
     "cs": 1014, 
     "minutesPlayed": 171, 
     "teamSlug": "bangkok-titans" 
    }, 

И мой сценарий упоминается ниже. Когда я запускаю его он выдает ошибку: индексы списка должны быть целыми, не Сыроватский

import csv 
import json 

json_file='PlayerStats.json' 
with open(json_file, 'r') as json_data: 
x = json.load(json_data) 

f = csv.writer(open("playerstats.csv", "w")) 

f.writerow(["stats", "id", "name", "position","playerSlug", "team",  "gamesPlayed", "kda", "kills", "deaths", "assists", "killParticipation", "csPerMin", "cs", "minutesPlayed", "teamSlug"]) 

stats=x["stats"] 
for key in x["stats"]: 
    f.writerow([ 
      x["stats"][key]["id"], 
      x["stats"][key]["name"], 
      x["stats"][key]["position"], 
      x["stats"][key]["playerSlug"], 
      x["stats"][key]["team"], 
      x["stats"][key]["gamesPlayed"], 
      x["stats"][key]["kda"], 
      x["stats"][key]["kills"], 
      x["stats"][key]["deaths"], 
      x["stats"][key]["assists"], 
      x["stats"][key]["killParticipation"], 
      x["stats"][key]["csPerMin"], 
      x["stats"][key]["cs"], 
      x["stats"][key]["minutesPlayed"], 
      x["stats"][key]["teamSlug"]])  

Я думаю, что есть какая-то проблема в разборе списка из словарей. Пожалуйста помоги.

+0

Но до сих пор ее не работает –

+0

Не могли бы вы изменить свой вопрос, чтобы сообщить нам, какая линия дает ошибку, и добавить тег для языка компьютера, который вы используете? –

+1

(x ["stats"] [key] ["id"]): эта строка получает ошибку. И языком, который я использую, является python –

ответ

0

Здесь стат содержит список объектов JSon/dicts, поэтому, когда вы перебирать стат каждый «ключ» является ДИКТ не показатель. Просто используйте:

key["id"] 
0

x ["stats"] - это список. Не дикт.

Так измените x["stats"][key]["id"] на x["stats"][0][key]["id"]

for key in x["stats"]: 
    f.writerow([ 
      x["stats"][0][key]["id"], 
      .... 
Смежные вопросы