我有一个包含元组的列表,在每个元组中都有一个列表和一个整数值 E.g。
Mylist = [([1,1,3], 3),([1,1,3], 30),([2,2,3], 15),([1,3,3], 2)]
我希望此列表返回此元组([1,3,3],2) 因为Mylist [i] [1] = 2,即列表中的min。 现在,内置函数min()并没有真正做到这一点..它根据Mylist [i] [0]
的实际列表进行比较只有当列表包含两个项目时,我才能执行此操作: 但我还没想出如何在...列出10个项目!
def min(a,x,b,y):
t = a
if x >= y:
t = b
return t
答案 0 :(得分:6)
Mylist = [([1,1,3], 3),([1,1,3], 30),([2,2,3], 15),([1,3,3], 2)]
print min(Mylist,key=lambda x:x[1])
您可以使用key
提供min
到lambda
功能。
输出:([1, 3, 3], 2)
答案 1 :(得分:2)
如果您首先使用值存储列表,则可以直接使用min
和sorted
:
Mylist = [(3, [1,1,3]), (30, [1,1,3]), (15, [2,2,3]),(2, [1,3,3])]
min(Mylist)
输出:(2, [1, 3, 3])
答案 2 :(得分:1)
我的解决方案
myList = [([1, 1, 3], 3), ([1, 1, 3], 30), ([2, 2, 3], 15), ([1, 3, 3], 2)]
minValue = [i for i in myList if i[1] == min([x[1] for x in myList])]
返回最小值
的项目列表[([1, 3, 3], 2)]
例如,如果你有一个像
这样的列表myList = [([1, 1, 3], 3), ([1, 1, 3], 30), ([2, 2, 3], 15), ([1, 3, 3], 2), ([1, 1, 3], 2)]
结果将是
[([1, 3, 3], 2),([1, 1, 3], 2)]
我不知道你是否需要这个但是有效:D
答案 3 :(得分:0)
为了感兴趣,这是一种功能性方法:
def get_min_tuple(l):
def get_index(lst, num, index=0):
if num in lst[index]:
return index
else:
return get_index(lst, num, index + 1)
def find_min(l, smallest=None, assigned=False):
if l == []:
return smallest
else:
if not assigned:
smallest = l[0][1]
assigned = True
else:
if l[0][1] < smallest:
smallest = l[0][1]
return find_min(l[1:], smallest, assigned)
return l[get_index(l, find_min(l))]
虽然为min函数提供密钥的单行程当然在实际意义上更有用,但我认为我会将其分享用于教育目的。
答案 4 :(得分:-1)
时间复杂度= n
Mylist = [([1,1,3], 3),([1,1,3], 30),([2,2,3], 15),([1,3,3], 2)]
minv=MyList[0][1]
minv1=MyList[0][0]
for lst in MyList:
if(lst[1]<minv):
minv=lst[1]
minv1=lst[0]
print(tuple(minv1,minv))