打印python中json括号内的所有元素



我想获得所有'name'之间用逗号分隔

{
"example": [
{
"id": 1,
"name": "blah"
},
{
"id": 2,
"name": "nah"
},
{
"id": 5,
"name": "krah",
},
{
"id": 10,
"name": "ugh"
}
],
}

当我试图:


example = r_json['example']['name']
print(example)

它返回我:

example = r_json['example']['name']
TypeError: list indices must be integers or slices, not str

我想要的输出是这样的:

blah, nah, krah, ugh

""example""为列表。要访问项目,您需要使用索引。例如

>>> r_json["example"][0]["name"]
'blah'

如果你想获得所有的名字,你需要循环遍历列表中的每一项。

>>> for i in range(len(r_json["example"])):
...    print(r_json["example"][i]["name"])
blah
nah
krah
ugh

一种更简单的方法是直接遍历列表而不使用索引:

>>> for example in r_json["example"]:
...    print(example["name"])
blah
nah
krah
ugh

你可以这样做:

>>> names = []
>>> for example in r_json["example"]:
...    names.append(example["name"])
>>> names
['blah', 'nah', 'krah', 'ugh']

一个更简单的方法是使用推导式:

>>> names = [example["name"] for example in r_json["example"]]
>>> names
['blah', 'nah', 'krah', 'ugh']

一旦你有了names,你可以使用str.join来得到你的最终结果:

>>> ", ".join(names)
'blah, nah, krah, ugh'

作为一行只是为了好玩:

>>> ", ".join(example["name"] for example in r_json["example"])

更有趣的一行字!

>>> from operator import itemgetter
>>> ", ".join(map(itemgetter("name"), r_json["example"]))
'blah, nah, krah, ugh'

正如错误所示,r_json['example']下的值是一个字典列表,因此您不能像r_json['example']['name']那样访问它。获取名称的一种方法是使用列表推导式:

example = [d['name'] for d in r_json['example']]
print(*example)

输出:

blah nah krah ugh

最新更新