为什么我没拿到lis

2024-10-01 17:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个json文件

{
"children": [{
        "objName": "Sprite1",
        "scripts": [[69,
                57,
                [["whenGreenFlag"],
                    ["broadcast:", "Pin D On"],
                    ["wait:elapsed:from:", 3],
                    ["broadcast:", "Pin D Off"],
                    ["wait:elapsed:from:", 1]]]],
        "sounds": [{
                "soundName": "meow",
                "soundID": 0,
                "md5": "83c36d806dc92327b9e7049a565c6bff.wav",
                "sampleCount": 18688,
                "rate": 22050,
                "format": ""
            }]
    }]

}

我试图解析GreenFlag信息但是当我运行这个

> import ast import json from pprint import pprint
> 
> 
> 
> 
> 
> 
> codeInput = [] codeOutput = []
> 
> with open("project.json") as projectFile:
>     codeInput =json.load(projectFile)
> 
> print type(codeInput)
> 
> #pprint(codeInput)
> #print"----"
> 
> #print codeInput["children"]
> 
> scripts = codeInput["children"][0]["scripts"] print type(scripts) for
> items in scripts:
>     print "items",items
> 
> print scripts[2]

我没有得到一个清单,我得到这个,但它看起来应该是 给我一张单子

<type 'dict'>
<type 'list'>
items [69, 57, [[u'whenGreenFlag'], [u'broadcast:', u'Pin D On'], [u'wait:elapsed:from:', 3], [u'broadcast:', u'Pin D Off'], [u'wait:elapsed:from:', 1]]]
Traceback (most recent call last):
  File "C:/Dropbox/Private/Scratch2Crumble/projectparser.py", line 46, in <module>
    print scripts[2]
IndexError: list index out of range

我做错什么了

我刚刚添加了这个额外的文本,以试图让我的奎斯廷张贴


Tags: fromimportjsontypepinscriptsitemspprint
2条回答

这是因为与scripts关联的值是一个包含单个元素的列表,该元素是一个列表。 当输出格式更好时,您可以看到:

[
    [
        69,
        57,
        [
            ["whenGreenFlag"],
            ["broadcast:", "Pin D On"],
            ["wait:elapsed:from:", 3],
            ["broadcast:", "Pin D Off"],
            ["wait:elapsed:from:", 1]
        ]
    ]
]

所以你必须打电话给scripts[0][2]才能得到你想要的

字典中与键"scripts"关联的值是一个包含一个元素的列表

"scripts": [[69,
            57,
            [["whenGreenFlag"],
                ["broadcast:", "Pin D On"],
                ["wait:elapsed:from:", 3],
                ["broadcast:", "Pin D Off"],
                ["wait:elapsed:from:", 1]]]],

如果在"scripts":后面有两个方括号,这意味着有一个包含一个元素的列表,而该元素是另一个包含69, 57等的列表

相关问题 更多 >

    热门问题