Python-多元素分组(元组列表)
我有以下元组列表:Python-多元素分组(元组列表),python,list,sorting,nested,tuples,Python,List,Sorting,Nested,Tuples,我有以下元组列表:[('platform','train','time')] 我希望我的输出如下: Platform 1: train 2: 02-19-2014, train 5: 02-19-2014, 06-19-2014 Platform 2: train 3: 04-19-2014, 07-19-2014 train 5: 09-19-2014 到目前为止,我只得到: Platform 1: train 2, train 5 Platform 2: train 3, train 5
[('platform','train','time')]
我希望我的输出如下:
Platform 1: train 2: 02-19-2014, train 5: 02-19-2014, 06-19-2014
Platform 2: train 3: 04-19-2014, 07-19-2014 train 5: 09-19-2014
到目前为止,我只得到:
Platform 1: train 2, train 5
Platform 2: train 3, train 5
使用此代码:
for key, group in groupby(travel, lambda x: x[0]):
listOfThings = " , ".join(["%s" % thing[1] for thing in group])
print "Platform " + key + ": " + listOfThings
灵感来自帖子
如何更改代码以获得所需的输出?
groupby
要求对传递给它的iterable进行排序,如下代码所示。第一个groupby
按平台分组。然后,第二个groupby
用于按火车对时间进行分组
from itertools import groupby
travel= [(2,5,'09-19-2014'),(2,3,'07-19-2014'),(1,5,'06-19-2014'),(2,3,'04-19-2014'),(1,5,'01-19-2014'),(1,2,'02-19-2014')]
for platform, g1 in groupby(sorted(travel), lambda t: t[0]):
print 'Platform {}: '.format(platform),
trains = []
for train, times in groupby(sorted(g1), lambda t: t[1]):
trains.append('train {}: {}'.format(train, ', '.join(time[2] for time in times)))
print ', '.join(trains)
输出
Platform 1: train 2: 02-19-2014, train 5: 01-19-2014, 06-19-2014
Platform 2: train 3: 04-19-2014, 07-19-2014, train 5: 09-19-2014
groupby
要求传递给它的iterable按照下面的代码进行排序。第一个groupby
按平台分组。然后,第二个groupby
用于按火车对时间进行分组
from itertools import groupby
travel= [(2,5,'09-19-2014'),(2,3,'07-19-2014'),(1,5,'06-19-2014'),(2,3,'04-19-2014'),(1,5,'01-19-2014'),(1,2,'02-19-2014')]
for platform, g1 in groupby(sorted(travel), lambda t: t[0]):
print 'Platform {}: '.format(platform),
trains = []
for train, times in groupby(sorted(g1), lambda t: t[1]):
trains.append('train {}: {}'.format(train, ', '.join(time[2] for time in times)))
print ', '.join(trains)
输出
Platform 1: train 2: 02-19-2014, train 5: 01-19-2014, 06-19-2014
Platform 2: train 3: 04-19-2014, 07-19-2014, train 5: 09-19-2014
请先按平台编号对列表进行排序,或使用以平台编号为键的词典。请先按平台编号对列表进行排序,或使用以平台编号为键的词典。@Sepi,那么您为什么不接受它作为正确答案:)@Sepi,那么您为什么不接受它作为正确答案:)