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

时间:2018-02-22 16:39:37

标签: python list dictionary min

我有一个列表,其中包含这样的字典行:

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

我试着让它返回最小的值及其键,所以在这种情况下它会返回

1,0.39085439023582913

我尝试过使用

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

但是这样只返回整行:任何建议?谢谢!

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

3 个答案:

答案 0 :(得分:1)

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

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

您的示例返回:

[(1, 0.39085439023582913)]

d.items()以字典(key, value)的{​​{1}}格式返回元组列表。然后,我们使用值(在这种情况下为d)对这些元组进行排序。

如果您始终以包含一个字典的列表形式获取数据,您还可以在x[1]的第一个元素上调用.items()并找到min:

queue

答案 1 :(得分:0)

是的,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]))

答案 2 :(得分:0)

你可以通过

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

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

mykey, queue[0][mykey]