我在Python 2.7.10上编写了一个函数,该函数读取.txt文件并从文件中创建一个列表,然后按这些参数排序:
到目前为止我的代码:
import operator #imported before function
INDEXArrivalHour = 4 #imported before function
inFile = open("services0604.txt", "r")
inFile = inFile.readlines()[7:]
servicesList = []
for line in inFile:
servicesList.append(line.rstrip().split(", "))
servicesList = sorted(servicesList, key = operator.itemgetter(INDEXArrivalHour))
return servicesList
打印功能的结果:
[
['Maria Conceicao'<-#driver name, '13-GH-88', 'John Tush', '11:30', '11:50'<-#hour her service ends, 'alfama', '30', 'charges'],
['Josefino Branco', '07-BB-99', 'Louis Amber', '11:05', '11:50', 'baixa', '45', 'terminates'],
['Dominique Bart', '04-TY-86', 'Sarah Lino', '11:10', '12:10', 'lumiar', '80', 'terminates'],
['Tiago Quaresma', '17-VI-90', 'Paulo Silva', '12:05', '12:30', 'alvalade', '30', 'terminates']
]
通过第二个参数,第一个列表应该在第二个列表之后。我尝试使用两个分开的已排序的(),但它没有完成这项工作,我已经玩过&#34; key =&#34;但是我真的陷入了困境之中。 如果有人能帮助我,我会非常感激
答案 0 :(得分:1)
排序两次但是单独排序将无法正常工作,因为您将丢弃第一次排序的结果。
相反,直接按两个属性排序:
servicesList.sort(key=lambda x: (x[4], x[0]))
这将为每个项目使用元组(x[4], x[0])
来确定排序。 x[4]
是时间,x[0]
是名称。