我想获得所有'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