如何迭代这个嵌入的JSON“;列表“;用python?
这里是python新手。我试图迭代每个人的所有JSON“group”对象,但有一些困难。这只是一个部分列表(并非所有用户都有组),因此我需要使用try/catch块,以便没有组列表的用户不会导致提前终止 JSON数据片段:如何迭代这个嵌入的JSON“;列表“;用python?,python,json,Python,Json,这里是python新手。我试图迭代每个人的所有JSON“group”对象,但有一些困难。这只是一个部分列表(并非所有用户都有组),因此我需要使用try/catch块,以便没有组列表的用户不会导致提前终止 JSON数据片段: { "people": [ { "person": { "name": "joe", "email": "joe@foo.net", "groups": [ {
{
"people": [
{
"person": {
"name": "joe",
"email": "joe@foo.net",
"groups": [
{
"name": "office",
"id": 23
},
{
"name": "mfg",
"id": 93
} ]
},
"person": {
"name": "bill",
"email": "bill@foo.net",
"groups": [
{
"name": "acctg",
"id": 133
},
{
"name": "mgr",
"id": 207
} ]
}
}
]
}
这是我目前的代码:
jdata = json.loads...
for person in jdata['people']:
for key, val in person.iteritems():
print "key ", key , " is ", val
print val["name"]
print val["email"]
try:
for gkey, gval in val["groups"][0].iteritems():
print "gval: " + gval
except:
foo=1
请注意,我可以通过为gkey…val[“groups”][0]执行
来打印组列表中第0项的列表。iteritems()
但是我真正想要的是迭代每个人的列表(一些人属于两个组,其他人10个或更多),因此没有固定长度。我该怎么做?这就是你想要的吗
>>> for group in j['people'][0]['person']['groups']:
for k,v in group.items():
print(k,v)
name acctg
id 133
name mgr
id 207
或者更一般地说:
>>> for person in j['people']:
for group in person['person']['groups']:
print('Name : {} --- ID: {}'.format(group['name'], group['id']))
Name : acctg --- ID: 133
Name : mgr --- ID: 207
对val[“groups”]
上的循环使用。或者这不是您想要的吗?您可以说val.get(“groups”,[]),而不是try/except,并在上面进行迭代。如果那个人没有群组,它将返回一个空列表。谢谢!你展示的第二个例子正是我所需要的。唷!