无法遍历字典
can't iterate through dictionary
我有一个 JSON-File,里面有一些数据。现在我尝试提取一些数据,但我总是得到错误
回溯(最后一次调用):
文件“C:\Users\Foo\PycharmProjects\youtube_stats\youtube_videos.py”,第 29 行,位于
标题 = vid["标题"]
类型错误:字符串索引必须是整数
代码如下:
x= open("results/yt.json", mode="r")
vids = json.load(x)
for vid in vids[channel_id]["video_data"]:
vid_id = vid
title = vid["title"]
date = vid["publishedAt"]
likes = vid["likeCount"]
views = ["viewCount"]
comment_int =["commentCount"]
这是JSON-File:
{
"Foo": {
"channel_statistics": {
"viewCount": "20496906",
"subscriberCount": "220000",
"hiddenSubscriberCount": false,
"videoCount": "393"
},
"video_data": {
"video_id": {
"publishedAt": "2022-04-22T11:34:30Z",
"channelId": "Foo",
"title": "Foo",
"description": "Foo",
"thumbnails": {
"default": {
"url": "Foo",
"width": 120,
"height": 90
},
"medium": {
"url": "Foo",
"width": 320,
"height": 180
},
"high": {
"url": "Foo",
"width": 480,
"height": 360
}
},
"channelTitle": "Foo",
"categoryId": "24",
"liveBroadcastContent": "none",
"localized": {
"title": "Foo",
"description": "Foo"
},
"defaultAudioLanguage": "de",
"viewCount": "54991",
"likeCount": "886",
"favoriteCount": "0",
"commentCount": "1276",
"duration": "PT42M34S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": true,
"contentRating": {},
"projection": "rectangular"
},
我真的找不到解决办法,虽然它可能很简单...
正如其他评论中提到的那样,运行 for vid in vids[channel_id]["video_data"]:
将遍历字典键。如果您想检查内容,您可以使用键访问值,或使用 dict.values()
遍历字典值。
例如1
for vid in vids[channel_id]["video_data"]:
title = vids[channel_id]["video_data"][vid]["title"]
或
例如2
for vid in vids[channel_id]["video_data"].values():
title = vid["title"]
查看 Python Docs 了解更多信息。
我有一个 JSON-File,里面有一些数据。现在我尝试提取一些数据,但我总是得到错误
回溯(最后一次调用):
文件“C:\Users\Foo\PycharmProjects\youtube_stats\youtube_videos.py”,第 29 行,位于
标题 = vid["标题"]
类型错误:字符串索引必须是整数
代码如下:
x= open("results/yt.json", mode="r")
vids = json.load(x)
for vid in vids[channel_id]["video_data"]:
vid_id = vid
title = vid["title"]
date = vid["publishedAt"]
likes = vid["likeCount"]
views = ["viewCount"]
comment_int =["commentCount"]
这是JSON-File:
{
"Foo": {
"channel_statistics": {
"viewCount": "20496906",
"subscriberCount": "220000",
"hiddenSubscriberCount": false,
"videoCount": "393"
},
"video_data": {
"video_id": {
"publishedAt": "2022-04-22T11:34:30Z",
"channelId": "Foo",
"title": "Foo",
"description": "Foo",
"thumbnails": {
"default": {
"url": "Foo",
"width": 120,
"height": 90
},
"medium": {
"url": "Foo",
"width": 320,
"height": 180
},
"high": {
"url": "Foo",
"width": 480,
"height": 360
}
},
"channelTitle": "Foo",
"categoryId": "24",
"liveBroadcastContent": "none",
"localized": {
"title": "Foo",
"description": "Foo"
},
"defaultAudioLanguage": "de",
"viewCount": "54991",
"likeCount": "886",
"favoriteCount": "0",
"commentCount": "1276",
"duration": "PT42M34S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": true,
"contentRating": {},
"projection": "rectangular"
},
我真的找不到解决办法,虽然它可能很简单...
正如其他评论中提到的那样,运行 for vid in vids[channel_id]["video_data"]:
将遍历字典键。如果您想检查内容,您可以使用键访问值,或使用 dict.values()
遍历字典值。
例如1
for vid in vids[channel_id]["video_data"]:
title = vids[channel_id]["video_data"][vid]["title"]
或
例如2
for vid in vids[channel_id]["video_data"].values():
title = vid["title"]
查看 Python Docs 了解更多信息。