内联尝试除外

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))

有两个原因:

因此,我想要某种内联 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'])