我有一个列表,其中包含这样的字典行:
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}
答案 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]