2011-11-29 60 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

那真的很酷.. –

相关问题