排序后选择嵌套列表的最小值元素

2024-05-16 21:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想选择第二个元素(浮动部分)嵌套列表的最小值。你知道吗

代码

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]

Tags: the代码元素number列表forinputval
3条回答

由于数组已排序:

print(arr[0])

或者

min_val=min(arr)

将按第一个元素排序。要按第二个元素排序,请将其更改为:

min_val=min(arr, key = lambda t: t[1])

按照Willem Van Onsem的建议使用min和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

计算最小值时使用:

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)

相关问题 更多 >