我想选择第二个元素(浮动部分)的嵌套列表的最小值。
码
n=int(input("Enter the number: "))
arr=[[input(),float(input())] for _ in range(0,n)]
arr.sort(key=lambda x: (x[1],x[0]))
min_val=min(arr)
print(min_val)
输入
Enter the number: 3
arp
5
grp
4
drp
3
产量
['arp', 5.0]
预期产出
['drp',3.0]
您计算最小值:
n = int(input("Enter the number: "))
arr = [[input(),float(input())] for _ in range(0,n)]
arr.sort(key=lambda x: (x[1],x[0]))
min_val=min(arr)
print(min_val)
这意味着您将在列表上执行循环,并获取最小元素。由于你没有提供密钥,Python会对它进行排序,就像它默认排序元组一样:首先是第一个元素,如果是第二个元素的连接,依此类推。
如果您想根据特定键获得最小值,则需要使用key
函数的min
参数:
n = int(input("Enter the number: "))
arr = [[input(),float(input())] for _ in range(0,n)]
min_val=min(arr, key=lambda x: (x[1],x[0]))
print(min_val)
请注意,获取最小值通常比排序列表更快。如果您不需要对列表进行排序,可以删除它,只需使用min(..)
(如此处)。
如果您需要对列表进行排序,最小元素是列表的第一个元素,因此您可以使用以下方法获取它:
n = int(input("Enter the number: "))
arr = [[input(),float(input())] for _ in range(0,n)]
arr.sort(key=lambda x: (x[1],x[0]))
min_val=arr[0]
print(min_val)
如Willem Van Onsem所建议的那样使用min with key并对您的序列应用过滤器:
arr=[("a",2),("b","5"),("c",1),("a",2),("b","5"),("c",1)]
# get minimal value
min_val=min(arr, key= lambda x:(x[1],x[0]))
# filter all with 2nd element euqal to minimals 2nd elemenbt
withoutMin = filter(lambda x: x[1] != min_val[1], arr)
# or use equivalent list comp:
# without = [x for x in arr if x[1] != min_val[x]]
print(arr)
print(withoutMin)
输出:
[('a', 2), ('b', '5'), ('c', 1), ('a', 2), ('b', '5'), ('c', 1)]
[('a', 2), ('b', '5'), ('a', 2), ('b', '5')] # filtered
因为数组已经排序:
print(arr[0])
要么
min_val=min(arr)
将按第一个元素排序。要按第二个元素排序,请将其更改为:
min_val=min(arr, key = lambda t: t[1])