我有一个JSON,其中有多个{}
,除了一个之外,都有'admissionCountTotal'
个元素。没有这个元素的人可以是任何人,但是为了这个例子,让我们说我们知道它是哪一个。
{
"movie":{
"boxOffice":[
{"admissionCountTotal":123},
{"admissionCountTotal":456},
{"admissionCountTotal":1234},
{"admissionCountTotal":1253},
{"admissionCount":"this is not admissionCountTotal"},
{"admissionCountTotal":61723},
{"admissionCountTotal":1423},
{"admissionCountTotal":12323},
{"admissionCountTotal":5123}
]
}
}
我想检索可以在这些admissionCountTotal
中找到的最大值。这是有效的,所以我基本上找到了如何做到这一点:
max(data['movie']['boxOffice'][sem]['admissionCountTotal'] for sem in xrange(0,3))
然而,这不是:
max(data['movie']['boxOffice'][sem]['admissionCountTotal'] for sem in xrange(0,56))
有两个原因:
data['movie']['boxOffice'][4]['admissionCountTotal']
会出错。data['movie']['boxOffice'][9]['admissionCountTotal']
并且大于9会产生错误,因为上面没有任何元素。但是,我不知道有多少元素(除了不能超过56个元素的事实)因此,我希望有某种内联try
结构,我怀疑它可以解决我的问题。可能吗 ?如果没有,我还能如何解决我的问题?
答案 0 :(得分:4)
我认为你根本不需要尝试;你只需要通过boxoffice的元素循环而不是整数范围。
max(item['admissionCountTotal'] for item in data['movie']['boxOffice'])
由于这些项目中至少有一项实际上没有总数,因此您可以使用get
默认值:
max(item.get('admissionCountTotal', 0) for item in data['movie']['boxOffice'])