在包含字典的列表中获取最小值(键,值)
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)
【讨论】:
以上是关于在包含字典的列表中获取最小值(键,值)的主要内容,如果未能解决你的问题,请参考以下文章