查找嵌套字典中的最小值并将其分配给键[python]

JLY*_*JLY 1 python dictionary nested

我在某个时候陷入了如何获取哪个键在下面的嵌套字典中获得最小 pb 值的困境。

a = {1230: {'name': 'Jack', 'age': 13, 'pb': 9.3, 'run': 10}, 1241: {'name': 'Sarah', 'age': 6, 'pb': 15.39, 'run': 21}, 1252: {'name': 'Eric', 'age': 6, 'pb': 16.41, 'run': 21}}
Run Code Online (Sandbox Code Playgroud)

我应用了获取所有 pb 的逻辑,并使用元组将它们分配给一个新列表:

reg = []
for i in a.keys():
   b = ( a[reg], a[reg]['pb'] )
Run Code Online (Sandbox Code Playgroud)

然后使用 min 函数来确定哪个键具有最小值。

print(min(b, key=b.get))
Run Code Online (Sandbox Code Playgroud)

然后我收到一条错误消息“TypeError: unhashable type: 'list'”

知道为什么我会收到此错误,因为我已经将列表更改为元组,然后应用了 min 函数。

预先感谢大家的帮助。

Dan*_*ejo 6

您可以执行以下操作:

a = {1230: {'name': 'Jack', 'age': 13, 'pb': 9.3, 'run': 10}, 1241: {'name': 'Sarah', 'age': 6, 'pb': 15.39, 'run': 21},
     1252: {'name': 'Eric', 'age': 6, 'pb': 16.41, 'run': 21}}

key = min(a, key=lambda x: a[x]['pb'])

print(key)
Run Code Online (Sandbox Code Playgroud)

输出

1230
Run Code Online (Sandbox Code Playgroud)