微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在字典中找到列表的最小值

如何解决在字典中找到列表的最小值

我已经被困了几个小时,请帮我找到一种方法来比较队列中的键和字典并找到最小值。

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

def find_min(label,queue): 
  
  for i in queue:
    for l in label:
      for s in label[i]:
        list1 = []
        return min(l[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","D" : ["C",15]},["A","D"]))  
# Output: A

print(find_min({"A" : [0],["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],"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
      

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。