Skip to main content
 首页 » 编程设计

python之如何仅对二维列表的第一列使用 min()

2025年05月04日15bluestorm

我有一个二维列表,其中每个条目都有一个时间戳 (int) 和一个可以是 int、字符串或对象的第二个值。

我正在使用 min() 函数获取具有最低时间戳的条目:

a = [[2, "start C"], 
     [6, 2484], 
     [15, "finish C"]] 
 
print(min(a)) 

输出:

[2, 'start C'] 

当存在相同的最低时间戳时,min() 将比较这些项目的第二列。

这仅在第二列具有可比较的值时有效:

a = [[2, "start C"], 
     [2, "start B"], 
     [15, "finish C"]] 
 
print(min(a)) 

输出:

[2, 'start B'] 

如果第二列包含不同的数据类型,它会抛出一个错误:

a = [[2, "start C"], 
     [2, 2484], 
     [15, "finish C"]] 
 
print(min(a)) 

输出:

TypeError: '<' not supported between instances of 'int' and 'str' 

如何让仅检查第一列 的最小值? 当存在相同的时间戳时,它应该只返回遇到的第一个项目。

请您参考如下方法:

你可以传递一个比较键

min(my_list, key=lambda x: x[0]) 

默认情况下,python 使用第一项进行比较,如果出现平局,则使用第二项作为决胜局(依此类推),这就是出现错误的原因。