Sadece yılın başlar int böylece tersine için tarihleri değiştirebilir hiç dateutil gerekmez
:
r = [['21-09-1995', 3], ['22-11-1995', 2] , ['07-01-1988', 6], ['test', 4], ['12-12-2001', 5]]
def srt(x):
try:
return int("".join(x[0].split("-")[::-1]))
except ValueError:
return 0
r.sort(key=srt)
Çıktı: Eğer sakıncası yoksa
[['test', 4], ['07-01-1988', 6], ['21-09-1995', 3], ['22-11-1995', 2], ['12-12-2001', 5]]
sahip sonuna sıralaması metin dizeleri bile basittir:
r.sort(key=lambda x: "".join(x[0].split("-")[::-1]))
size verecekti o:
Farklı biçimi için
['07-01-1988', 6], ['21-09-1995', 3], ['22-11-1995', 2], ['12-12-2001', 5], ['test', 4]]
:
r = [['21-09-1995', 3], ['22/11/1995', 2] , ['07-01-1988', 6], ['test', 4], ['12-12-2001', 5]]
import re
reg = re.compile("[\-/]")
r.sort(key=lambda x: "".join(reg.split(x[0])[::-1]))
Çıktı:
[['07-01-1988', 6], ['21-09-1995', 3], ['22/11/1995', 2], ['12-12-2001', 5], ['test', 4]]
Esaslı bir fark fark bile regex kullanarak orada görebilirsiniz
:
r = [['21-09-1995', 3], ['22/11/1995', 2] , ['07-01-1988', 6], ['test', 4], ['12-12-2001', 5]]
r.sort(key=my_parse)
...:
10000 loops, best of 3: 185 µs per loop
In [5]:
In [5]: %%timeit
r = [['21-09-1995', 3], ['22/11/1995', 2] , ['07-01-1988', 6], ['test', 4], ['12-12-2001', 5]]
r.sort(key=lambda x: "".join(reg.split(x[0])[::-1]))
...:
100000 loops, best of 3: 6.56 µs per loop
In [7]: %%timeit
r = [['21-09-1995', 3], ['22/11/1995', 2] , ['07-01-1988', 6], ['test', 4], ['12-12-2001', 5]]
r.sort(key=regex_srt)
...:
100000 loops, best of 3: 10.3 µs per loop
varsa '07 -01-1988 salı 'gibi bir düz liste ve dize:
reg = re.compile("[\-/\s]")
r = ['test', '02/03/2015 test', '02/09/2016 test', '12/11/2011 test', '22/01/2015 test', '22/01/2010 test', '22/01/2013 test']
def srt(x):
try:
print(reg.split(x))
return int("".join(reg.split(x)[:3][::-1]))
except ValueError:
return 0
r.sort(key=srt)
print(r)
Çıkış:
['test', '22/01/2010 test', '12/11/2011 test', '22/01/2013 test', '22/01/2015 test', '02/03/2015 test', '02/09/2016 test']
'r = sıralanmış (r, anahtar = lambda değerlerinin (ayrıştırma değerleri [0])) ' –
@PeterWood, sayesinde Peter. Yukarıdaki listeden '[' test ', 4] 'alt listesini çıkardığımda bir sıralama yapar. Değilse, bu hatayı verir: 'DeğerError: Bilinmeyen dize biçimi' – Reman