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

Posted

技术标签:

【中文标题】在包含字典的列表中获取最小值(键,值)【英文标题】:getting minimum (key, value) in a list that holds a dictionary 【发布时间】:2018-08-02 14:49:01 【问题描述】:

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

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

【问题讨论】:

可能重复***.com/questions/3282823/… 【参考方案1】:

是的,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】:

你可以通过

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

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

mykey, queue[0][mykey]

【讨论】:

队列是一个列表【参考方案3】:

如果您想要列表中每个 dict 的最小值,可以使用以下列表推导:

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

您的示例返回:

[(1, 0.39085439023582913)]

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

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

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

【讨论】:

以上是关于在包含字典的列表中获取最小值(键,值)的主要内容,如果未能解决你的问题,请参考以下文章

获取字典最小值的键,而该键在数组中

在列表中查找具有值的最小字典键的 Pythonic 方法?

使用列表值获取 dict 的最大值和最小值

获取包含单词和数字的字典的最小值和混合值

列表字典中的Python最小值

如何从从excel文件派生的大量字典中的值列表中查找最小值和最大值