为什么我不能在Python中打印JSON属性?我做错什么了?

2024-10-01 15:39:08 发布

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

我有以下代码:

jobs = {"24": {"wage": "empty", "phone": "empty", "title": "sapfh", "description": "sod", "time": "twelve"}, "20": {"wage": "987g", "phone": "iudg", "time": "twelve", "description": "fdgsdfg", "title": "sfgji"}, "21": {"wage": "987g", "phone": "iudg", "title": "sfgji", "description": "fdgsdfg", "time": "twelve"}, "22": {"wage": "987g", "phone": "iudg", "time": "twelve", "description": "fdgsdfg", "title": "sfgji"}, "23": {"wage": "987g", "phone": "iudg", "title": "sfgji", "description": "fdgsdfg", "time": "twelve"}, "24": {"wage": "empty", "phone": "empty", "time": "twelve", "description": "sod", "title": "sapfh"}}

for job in jobs:
    print job["title"]

但它不会每次都打印出标题。我只得到TypeError: string indices must be integers, not str,但是如果我把0而不是{},它只输出数字的第一个字符(所以都是2)。在


Tags: 代码timetitlejobsjobphonedescriptionempty
2条回答

当您使用for/in迭代字典时,它会迭代字典的键。因此,迭代变量(job在本例中)将依次包含字典的每个键:在本例中,它将包含"24""20""21"

您需要迭代字典值(每个作业字典)。然后,您可以检索每个文件的title属性。为此,请改为这样循环:

for job in jobs.values():
    print job["title"]

如果同时需要键和值,可以使用iteritems,如下所示:

^{pr2}$

还要注意,jobs是一个Python字典文本,而不是JSON(实际上根本不涉及JSON)。它也是一个非法构成的字典文本,因为它包含两个"24"键(键不能重复)。在

当你在字典上迭代时,你要迭代它的键。这意味着当前代码正在迭代jobs(字符串)的键。在

您应该改为使用^{}

for val in jobs.values():
    print val["title"]

现在,代码正在迭代jobs的值,这些值是字典。在


如果您想拥有键和值,可以使用^{}

^{pr2}$

相关问题 更多 >

    热门问题