[英]How to get the smallest item from the second items of a tuple list?
首先对令人困惑的标题感到抱歉,我不知道如何在没有示例的情况下解释我的问题。
我有以下图表
graph = {
1: [(3, 5), (4, 1), (5, 4)],
2: [(5, 9)],
3: [(5, 1), (6, 1)],
4: [(2, 11), (8, 2)],
5: [(4, 6), (2, 6)],
6: [(7, 1)],
7: [(5, 7), (2, 1)],
8: [(2, 6)],
}
我希望能够从给定数字的元组的第二项中获得最小的数字。 例如,如果我给 function 提供数字 1,我希望它从第二个元组返回 1。 如果输入是 4,我希望它从第二个元组返回 2。
我目前的方法是min((graph[s])[1])
,但这并没有真正起作用,并且主要返回索引错误。
编辑:我现在用(min(graph[s])[0], min(graph[s])[1])[1]
解决了问题(由于某种原因)它在所有情况下都有效(问题出在列表上只包含一个元组)。
只需使用:
s = 7
print(min(min(graph[s], key= lambda t:min(t))))
当处理像2: [(5, 9)]
这样有 juse 1 项的配对时,您的问题就出现了,当访问[1]
时,这将失败,您必须先检查长度
def get_min(graph, key, position=1):
values = graph[key]
if len(values) > position:
return min(values[position])
return -1
graph = {1: [(3, 5), (4, 1), (5, 4)],2:[(5, 9)],3: [(5, 1), (6, 1)],4: [(2, 11), (8, 2)],
5: [(4, 6), (2, 6)],6: [(7, 1)],7: [(5, 7), (2, 1)],8: [(2, 6)],}
for k,v in graph.items():
print(k, get_min(graph, k))
1 => 1
2 => -1
3 => 1
4 => 2
5 => 2
6 => -1
7 => 1
8 => -1
尝试这个:
def get_smallest_num(key):
return min(map(lambda x: x[1], graph[key]))
print(get_smallest_num(1)) # 1
print(get_smallest_num(5)) # 6
min((graph[key])[1])
对我有用。
您可以尝试: min([x[1] for x in graph[key]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.