Python 3.x 试图从json文件提取数据时,列表索引必须是整数或片,而不是str error

Python 3.x 试图从json文件提取数据时,列表索引必须是整数或片,而不是str error,python-3.x,Python 3.x,我试图从s3 bucket中的json文件中提取一些数据,但是我得到了这个错误:列表索引必须是整数或片,而不是str 代码如下: content_object = s3.get_object(Bucket=source_bucket, Key=key)['Body'] json_content = json.load(content_object) for i in json_content: ID = json_content[i]['ID'] DateTime

我试图从s3 bucket中的json文件中提取一些数据,但是我得到了这个错误:列表索引必须是整数或片,而不是str

代码如下:

content_object = s3.get_object(Bucket=source_bucket, Key=key)['Body']
json_content = json.load(content_object)
for i in json_content:
        ID = json_content[i]['ID']
        DateTime = json_content[i]['DateTime']
        SourceDevice = json_content[i]['SourceDevice']
        DestinationDevice = json_content[i]['DestinationDevice']
        DataType= json_content[i]['DataType']
        Activity = json_content[i]['Activity']
和json文件:

[
    {
        "ID": "No.",
        "DateTime": "Time",
        "SourceDevice": "Source",
        "DestinationDevice": "Destination",
        "DataType": "Protocol",
        "Activity": "label"
    },
    {
        "ID": "1",
        "DateTime": "SomeTime",
        "SourceDevice": "SomeSource",
        "DestinationDevice": "SomeDestination",
        "DataType": "ARP",
        "Activity": "normal"
    },
我已经讨论了很多关于同一问题的话题,但是我找不到与我的代码相关的答案。谢谢你的帮助

你需要改变

for i in json_content

您正在尝试使用json_内容列表元素为列表编制索引。或者,你也可以这样做

ID = i['ID'] 
用于获取字典元素。

您需要更改

for i in json_content

您正在尝试使用json_内容列表元素为列表编制索引。或者,你也可以这样做

ID = i['ID'] 

用于获取字典元素。

在Python的某些列表中为x使用
时,会自动将列表中的值获取为
x
,而不是列表中的索引。因此,您希望这样做:

for item in json_content:
    ID = item['ID']
    ...
如果还需要循环中的列表索引,请使用
enumerate

for index, value in enumerate(json_content):
    print(index, value['SourceDevice']) # prints "0 Source" and "1 SomeSource"

当您在Python中的某些列表中为x使用
时,会自动将列表中的值设置为
x
,而不是列表中的索引。因此,您希望这样做:

for item in json_content:
    ID = item['ID']
    ...
如果还需要循环中的列表索引,请使用
enumerate

for index, value in enumerate(json_content):
    print(index, value['SourceDevice']) # prints "0 Source" and "1 SomeSource"

第一件事:json_内容中的i的
i
中的
i
是什么,您确定以后可以用
i
索引
json_内容吗?
在json_内容中的i:
=>
键入(i)
=>口述。。。您的代码的其余部分没有太大意义……首先:json_内容中的i的
i
中的
i
是什么,您确定以后可以用
i
索引
json_内容吗?
在json_内容中的i:
键入(i)
=>dict。。。您的代码的其余部分没有多大意义…它返回一个dict。非常感谢您的帮助,它与您的第一个答案配合得很好!它返回了一个dict。非常感谢您的帮助,它与您的第一个答案配合得很好!