我的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'
答案 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"])