在字典中找到列表的最小值[关闭]

Posted

技术标签:

【中文标题】在字典中找到列表的最小值[关闭]【英文标题】:find minimum value of list in dictionary [closed] 【发布时间】:2021-07-16 05:12:26 【问题描述】:

我被困了好几个小时,请帮我找到一种方法,将队列中的键与字典进行比较并找到最小值。

下面是我到目前为止的代码。我尝试使用 min() 但它不起作用。

def find_min(label,queue): 
  
  for i in queue:
    for l in label:
      for s in label[i]:
        list1 = []
        return min(l[1])

下面是标签和队列输入

【问题讨论】:

这能回答你的问题吗? How do I sort a dictionary by value? 不,我不知道如何按值对字典进行排序 【参考方案1】:

您可以使用以下内容。

代码

def find_min(labels, queue):
    # Sort labels dictionary  based upon last item in values list 
    # which will be a number (kv[1] is value list, kv[1][-1] is last value in list)
    sorted_labels = dict(sorted(labels.items(), key = lambda kv: kv[1][-1]))
    
    #  Get the keys in order from sorted_labels that are also in the queue
    options = [k for k in sorted_labels if k in queue]
    
    # Return the first one (will be the smallest)
    return options[0] if options else None

测试

print(find_min("A" : [0], "B" : ["A",10], "C" : ["B",10], "D" : ["C",15], ["A", "D"]))  
# Output: A

print(find_min("A" : [0], "B" : ["A",10], "C" : ["B",10], "D" : ["C",15], ["B", "C", "D"]))  
# Output: B

更简单的选择

def find_min(labels, queue):
    # Initialize min value
    k_min, v_min = None, None

    for k, v in labels.items():
        if k in queue:
            # Only check keys in queue
            if v_min is None or v[-1] < v_min:
                # Don't have a min yet, or less than current min
                v_min = v[-1]
                k_min = k
    return k_min

测试

print(find_min("A" : [0], "B" : ["A",10], "C" : ["B",10], "D" : ["C",15], ["A", "D"]))  
# Output: A

print(find_min("A" : [0], "B" : ["A",10], "C" : ["B",10], "D" : ["C",15], ["B", "C", "D"]))  
# Output: B

使用海报代码

def find_min(label,queue): 
    kmin = None
    value_min = None
    for l in label:
      if l in queue:
        value = label[l]
        n = len(value)
        last_value = value[n-1]
        if kmin is None or last_value < value_min:
            kmin = l
            value_min = last_value
    return kmin
      

【讨论】:

谢谢您,您使用 lambda 的方式现在对我来说太先进了。有什么办法可以按照我上面的方式来做吗? @JosueNunez--嗨 Josue。当您提到“我知道如何按值对字典进行排序”时,我认为这意味着您熟悉使用 lambda 表达式作为排序键(即习惯方法)。如果我对键使用常规功能或一般的键功能会有所帮助吗? @JosueNunez——没关系——想到一个更简单的替代方案。 更简单的替代方案会很棒 @JosueNunez--添加了一个替代方案。有意义吗?

以上是关于在字典中找到列表的最小值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

[基础] 在Python中获得字典列表中最大值与最小值

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

列表字典中的Python最小值

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

在字典中查找最小值[重复]

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