在包含字典的列表中获取最小值(键,值)

getting minimum (key, value) in a list that holds a dictionary

我有一个包含字典行的列表,如下所示:

queue = [{1: 0.39085439023582913, 2: 0.7138416909634645, 3: 0.9871959077954673}]

我正在尝试将其设为 return 最小值及其密钥,因此在这种情况下它将 return

1,0.39085439023582913

我试过使用

min(queue, key=lambda x:x[1]) 

但是整行 return 都是这样:有什么建议吗?谢谢!

{1: 0.39085439023582913, 2: 0.7138416909634645, 3: 0.9871959077954673}

是的,min(queue) 会在 list 中找到最小值,而不是在封闭的 dictionary 中 这样做:

key_of_min_val = min(queue[0], key=queue[0].get)
print((key_of_min_val , queue[0][key_of_min_val]))

你可以通过

mykey = min(queue[0], key=queue[0].get)

然后只需使用此键并获取您的字典值

mykey, queue[0][mykey]

如果你想要列表中每个字典的最小值,你可以使用以下列表理解:

[min(d.items(), key=lambda x: x[1]) for d in queue]

你的例子returns:

[(1, 0.39085439023582913)]

d.items() returns 字典 d(key, value) 形式的元组列表。然后,我们使用值(在本例中为 x[1])对这些元组进行排序。

如果您的数据总是以列表形式包含一个字典,您还可以在 queue 的第一个元素上调用 .items() 并找到最小值:

print(min(queue[0].items(), key=lambda x:x[1]))
#(1, 0.39085439023582913)