2011-11-29 75 views
2

我想解析一個由對象數組組成的JSON對象。每個對象都包含幾個字段,但字段通常會丟失。這裏有一個例子:在Python中,是否有自動替換缺失值的方法?

{ 
    'objects' : [{ 
     'fieldA' : 1, 
     'fieldB' : 2, 
     'fieldC' : 3, 
    }, 
    { 
     'fieldA' : 7, 
     'fieldC' : 8, 
    }, 
    {}, 
    { 
     'fieldB' : 1, 
     'fieldC' : 0, 
    }] 
} 

我想每個字段轉換成一個列表,保留對象的排序,這相當於:

fieldA = [1,7,"Missing","Missing"] 
fieldB = [2,"Missing","Missing",1] 
fieldC = [3,8,"Missing",0] 

有沒有一種簡單的方法來做這個?我可以想出辦法來做到這一點,它涉及到很多'if'和'in'語句,並且重複遍歷列表。但似乎應該有一個更pythonic的方式來做到這一點,如:

fieldA = [ (obj.fieldA | "missing") for obj in json.objects] 

python語法是否允許這樣的事情?

+0

我不知道有一個[tag:missing]標籤。 – juliomalegria

+0

你知道,我甚至沒有想過這個。我想這是一種奇怪的標籤。在這種情況下工作,壽。 – Abe

回答

12

您需要dict.get()方法:

fieldA = [obj.get("fieldA", "missing") for obj in json["objects"]] 

需要注意的是一本字典的項目與["key"]訪問,不與.key

+0

那真的很酷.. –