簡體   English   中英

如何在python中迭代這個嵌入的JSON“列表”?

[英]How to iterate over this embedded JSON "list" in python?

這里是python的新手。 我正在嘗試為每個人迭代所有 JSON“組”對象,但遇到了一些困難。 這只是部分列表(並非所有用戶都有組),因此我需要使用 try/catch 塊,以便沒有組列表的用戶不會導致提前終止。

JSON 數據片段:

{
"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     

請注意,我可以通過執行for gkey...val["groups"][0].iteritems()打印出組列表中第 0 個項目的列表,但我真正想要的是遍歷每個group列表的所有group列表person條目(有些人分兩個組,其他人 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM