在字典中找到列表的最小值[关闭]
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--添加了一个替代方案。有意义吗?以上是关于在字典中找到列表的最小值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章