按日期和编号排序



如何对格式为-BTC-DMMMYY-00000-K的一堆数据进行排序例如:

"instrument_name":"BTC-31DEC21-20000-P">
"instrument_name":"BTC-24SEP21-15000-C">
"instrument_name":"BTC-16JUL21-40000-C">
"instrument_name":"BTC-30JUL21-40000-C">
"instrument_name":"BTC-16JUL2-25000-C">
"instrument_name":"BTC-16JUL21-3000-P">
"instrument_name":"BTC-24SEP21-13000-P">
"instrument_name":"BTC-14JUL21-37000-C">
"instrument_name":"BTC-23JUL21-40000-C">
"instrument_name":"BTC-14JUL21-38000-C">
"instrument_name":"BTC-24SEP21-10000-C">
"instrument_name":"BTC-31DEC21-44000-C">
"instrument_name":"BTC-24SEP21-10000-P">
"instrument_name":"BTC-24SEP21-12000-P">
"instrument_name":"BTC-14JUL21-33000-P";

我需要对其进行排序,以便日期和旁边的数字都有序(罢工(有什么想法吗?

如果您希望数据按升序排序,并且您有一个列表,如l

l = ["BTC-31DEC21-20000-P", "BTC-24SEP21-15000-C", "BTC-16JUL21-40000-C", "BTC-30JUL21-40000-C", 
"BTC-16JUL21-25000-C", "BTC-16JUL21-32000-P", "BTC-24SEP21-13000-P", "BTC-14JUL21-37000-C",
"BTC-23JUL21-40000-C","BTC-14JUL21-38000-C", "BTC-24SEP21-10000-C", "BTC-31DEC21-44000-C",
"BTC-24SEP21-10000-P", "BTC-24SEP21-12000-P", "BTC-14JUL21-33000-P"]  

然后:

from datetime import datetime
sorted(l, key= lambda x: (datetime.strptime(x[4:11],'%d%b%y'), x[12:17]))  

这将产生:

['BTC-14JUL21-33000-P',
'BTC-14JUL21-37000-C',
'BTC-14JUL21-38000-C',
'BTC-16JUL21-25000-C',
'BTC-16JUL21-32000-P',
'BTC-16JUL21-40000-C',
'BTC-23JUL21-40000-C',
'BTC-30JUL21-40000-C',
'BTC-24SEP21-10000-C',
'BTC-24SEP21-10000-P',
'BTC-24SEP21-12000-P',
'BTC-24SEP21-13000-P',
'BTC-24SEP21-15000-C',
'BTC-31DEC21-20000-P',
'BTC-31DEC21-44000-C']

最新更新