我想选择第二个元素(浮动部分)的嵌套列表的最小值。
代码
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]
答案 0 :(得分:3)
您可以通过以下方式计算最小值:
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)
答案 1 :(得分:1)
按照威廉·范·昂塞姆(Willem Van Onsem)的建议,使用带有键的min并将其应用于序列:
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
答案 2 :(得分:0)
因为数组已经排序:
print(arr[0])
OR
min_val=min(arr)
将按第一个元素排序。要按第二个元素排序,请将其更改为:
min_val=min(arr, key = lambda t: t[1])