如何解决在字典中找到列表的最小值
我已经被困了几个小时,请帮我找到一种方法来比较队列中的键和字典并找到最小值。
以下是我到目前为止的代码。我尝试使用 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 举报,一经查实,本站将立刻删除。