我有一个具有以下内容的file.txt:
('sim', 'sim','03-01-19', 'sim','Fechada', 'sim')
('ano', 'a', '02-01-19', 'a', 'Aberta', 'a')
('pano', 's', '01-01-19', 's', 'Aberta', 's')
我想这样排序:
('ano', 'a', '02-01-19', 'a', 'Aberta', 'a')
('pano', 's', '01-01-19', 's', 'Aberta', 's')
('sim', 'sim','03-01-19', 'sim','Fechada', 'sim')
还按如下日期对它进行排序:
('pano', 's', '01-01-19', 's', 'Aberta', 's')
('ano', 'a', '02-01-19', 'a', 'Aberta', 'a')
('sim', 'sim','03-01-19', 'sim','Fechada', 'sim')
如果有人可以帮助我,我将非常感激:)
抱歉我的英语不好
def ordenar():
ficheirocompra = open("compras.txt","r")
lines = ficheirocompra.readlines()
for line in lines:
a = line[0:line.find(',')]
print(a.sort())
ficheirocompra.close()
答案 0 :(得分:0)
如果您已经有一个元组列表,并且想要按每个元组的第一项进行排序,那么.sorted
或.sort
将完成这项工作。请记住,.sort
对列表本身进行排序,而.sorted
返回已排序的列表。
>>> L = [('sim', 'sim','03-01-19', 'sim','Fechada', 'sim'),
... ('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'),
... ('zoom', 'z', '05-01-19', 'z', 'Yo', 'z'),
... ('pano', 'zz', '01-01-19', 's', 'Aberta', 's')]
>>> L_namesort = sorted(L)
>>> print(L_namesort)
[('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'), ('pano', 'zz', '01-01-19', 's', 'Aberta', 's'), ('sim', 'sim', '03-01-19', 'sim', 'Fechada', 'sim'), ('zoom', 'z', '05-01-19', 'z', 'Yo', 'z')]
另一种方法是使用key
参数并选择要排序的项目。
def mysortingkey(item):
return item[0]
L = [('sim', 'sim','03-01-19', 'sim','Fechada', 'sim'),
('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'),
('zoom', 'z', '05-01-19', 'z', 'Yo', 'z'),
('pano', 'zz', '01-01-19', 's', 'Aberta', 's')]
L_namesort = sorted(L, key=mysortingkey)
print(L_namesort)
您可以使用相同的策略按日期排序,尽管这意味着将日期字符串转换为实际的datetime
日期。否则,像“ 12-25-18”之类的日期将被认为比“ 01-03-19”“晚”。
import datetime
def thedatesort(item):
return datetime.datetime.strptime(item[2], '%m-%d-%y')
L = [('sim', 'sim','03-01-19', 'sim','Fechada', 'sim'),
('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'),
('zoom', 'z', '05-01-19', 'z', 'Yo', 'z'),
('pano', 'zz', '01-01-19', 's', 'Aberta', 's')]
L_datesorted = sorted(L, key=thedatesort)
print(L_datesorted)