可以使用list.index()
函數將在custom_list
位置變成了一種關鍵:
sorted(my_list, key=lambda x: (custom_list.index(x[0]), x[1]))
您可能需要把你的custom_list
成字典然而,更快的映射:
custom_list_indices = {v: i for i, v in enumerate(custom_list)}
sorted(my_list, key=lambda x: (custom_list_indices.get(x[0]), x[1]))
字典查找需要一定的時間,list.index()
時間與列表長度成正比。
另一個優點是,對於字典,可以返回字典中未找到的條目的默認值(本例中爲None
);相反,list.index()
將引發ValueError
異常。
演示:
>>> my_list=(['chr1',12],['chrX',32],['chr2',1],['chr1',79],['chr2',6])
>>> custom_list=['chr1','chr2','chrX']
>>> sorted(my_list, key=lambda x: (custom_list.index(x[0]), x[1]))
[['chr1', 12], ['chr1', 79], ['chr2', 1], ['chr2', 6], ['chrX', 32]]
>>> custom_list_indices = {v: i for i, v in enumerate(custom_list)}
>>> sorted(my_list, key=lambda x: (custom_list_indices.get(x[0]), x[1]))
[['chr1', 12], ['chr1', 79], ['chr2', 1], ['chr2', 6], ['chrX', 32]]
你有沒有列表的元組,而不是一個元組列表。 – arshajii