在二维 python 列表中搜索特定列中的最后一次出现



我有一个包含[车辆名称,编号]的列表

a=[["car","A1"],["car","A2"],["truck","A1"]]

我需要一个函数,如果我指定

汽车 它应该返回"A2"该车辆名称中的最后一个数字。 如果我指定自行车,它应该返回"A0">

我尝试编写一些东西,但总是得到一个超出范围的错误列表索引

编辑:

这是完整的列表格式

["vehicle","color","vehicle_num","status(True/False)","code"]

给出车辆和颜色,如果车辆,颜色不存在,则应找到最后vehicle_numreturn "A0"

数字系统从"A1",.........."An"开始

n 因车辆、颜色而异

列表已排序

使用字典

您可以利用以下事实dict按顺序分配值list这是一个有序集合。因此,对于列表列表中的重复键,最后一个映射仍然存在。

a = [["car","A1"], ["car","A2"], ["truck","A1"]]
d = dict(a)
print(d['car'])    # A2
print(d['truck'])  # A1

如果您之后需要恢复为list(您不需要,因为您可以从字典写入 csv(。

res = list(map(list, d.items()))
print(res)
[['car', 'A2'], ['truck', 'A1']]

你可以使用这样的东西:

def search(l, word):
res = "A0"
for i in l:
if i[0] == word:
res
return res

然后,您可以通过将"An"保存为带有整数 n 的 A 的 Tupel 来优化它。

a = {'car':['A1', 'A2'], 'bike':['A0'], 'truck': ['A1']}
def return_last(vehicle):
return a[vehicle][-1]
return_last('car')

相关内容

最新更新