【问题标题】: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}

【问题讨论】:

标签: python list dictionary min


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2022-01-05
      • 2020-03-28
      • 1970-01-01
      • 2014-07-07
      • 2017-02-28
      • 2021-05-20
      • 1970-01-01
      • 2014-03-08
      相关资源
      最近更新 更多