我有一个二维列表,其中每个条目都有一个时间戳 (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 使用第一项进行比较,如果出现平局,则使用第二项作为决胜局(依此类推),这就是出现错误的原因。
