如何获取json文件中特定低级密钥的最高值的顶级密钥?

时间:2019-05-26 14:50:34

标签: python

我的json文件如下:

{
    "One": {
        "action": "One",
        "delay": 1558834290.2415142,
        "seconds": 60,
        "score": 10,
        "delta": 1558828290.2415142,
        "grace_sec": 6060
    },
    "Two": {
        "action": "Two",
        "delay": 1558834292.6928985,
        "seconds": 60,
        "score": 9,
        "delta": 1558828292.6928985,
        "grace_sec": 6060
    }
}

我想获取具有最高值score的顶级密钥,因此在这种情况下,我需要密钥One

我尝试过:

with open("streak.json", "r") as read_file:
                data = json.load(read_file)

highest = max(int(d['score'] for d in data.values()))

但是我收到TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'generator'

2 个答案:

答案 0 :(得分:2)

生成(内部值,外部键)的元组以获取所需的值。

max((int(value['score']), key) for key, value in data.items())

这应该评估为该元组

(10, 'One') 

您可以根据需要进行处理。

答案 1 :(得分:0)

您可以这样写:

result = max(data, key=lambda k: data[k]["score"])