列表索引必须是整数而不是字典

时间:2016-07-07 10:13:38

标签: python list dictionary

我的json文件看起来像这样,我正在尝试从中访问数据。

{
"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"
    },

我的脚本如下所述。当我运行它时它会给出错误:list indices必须是整数,而不是dict

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"]])    

我认为从字典解析列表存在一些问题。请帮忙。

2 个答案:

答案 0 :(得分:0)

x [" stats"]是一个列表。不是一个字典。

因此,请将x["stats"][key]["id"]更改为x["stats"][0][key]["id"]

for key in x["stats"]:
    f.writerow([ 
            x["stats"][0][key]["id"],
            .... 

答案 1 :(得分:0)

这里的stat包含一个Json对象/ dicts的列表,因此当你迭代stat每个" key"是一个字典而不是索引。只需使用:

key["id"]