2015-11-22 46 views
0

我在Python 2.7.10上编写了一个函数,该函数读取.txt文件,并将文件中的行从列表中排除参数:(Python)带有一个参数的列表导致另一个参数

  • 司机早先终止他们的服务的优先权高于 后来终止;
  • 驾驶员姓名的字典顺序决定了每种情况下的最终关系。

到目前为止我的代码:

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'] 
] 

由第二个参数的第一个列表应该来第二列表之后。我尝试过使用两个分开的sorted(),但它没有完成这项工作,我玩过“key =”,但我很困惑并且没有想法。 我很高兴如果有人能帮助我

回答

1

排序两次,但单独不会正常工作,因为你会扔掉第一次排序的结果。

相反,排序两个属性直接:

servicesList.sort(key=lambda x: (x[4], x[0])) 

这将使用一个元组(x[4], x[0])每个项目来确定排序。 x[4]是时间,而x[0]是这个名字。

相关问题