内联尝试除外
Inline try except
我有一个 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
结构,我怀疑它可以解决我的两个问题。可能吗 ?如果没有,我还能如何解决我的问题?
我认为你根本不需要 try/except;您只需要遍历 boxoffice 的元素而不是整数范围。
max(item['admissionCountTotal'] for item in data['movie']['boxOffice'])
由于这些项目中至少有一项实际上没有总数,您可以使用 get
和默认值:
max(item.get('admissionCountTotal', 0) for item in data['movie']['boxOffice'])
我有一个 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
结构,我怀疑它可以解决我的两个问题。可能吗 ?如果没有,我还能如何解决我的问题?
我认为你根本不需要 try/except;您只需要遍历 boxoffice 的元素而不是整数范围。
max(item['admissionCountTotal'] for item in data['movie']['boxOffice'])
由于这些项目中至少有一项实际上没有总数,您可以使用 get
和默认值:
max(item.get('admissionCountTotal', 0) for item in data['movie']['boxOffice'])