看我其他的解決方案,因爲我相信這是比這更好的一個: https://stackoverflow.com/a/10173807/1219006
>>> from operator import itemgetter
>>> from itertools import groupby
>>> data = ['1:Rammmm,mmmm', '2:surr.rrrrr', '3:Sam ttttt',
'1:qqqq qqqqqqq', '2:wwwwwwwwwww', '3:eeeeeeeee','4:tttttttt',
'1:zzzzzzzzzzzzz', '2:xxxxxxxxx']
>>> sorted_data = sorted(((int(x),y) for x,y in (el.split(':') for el in data)),key=itemgetter(0))
>>> for k,v in groupby(sorted_data,key=itemgetter(0)):
print '{' + '|'.join(text for num,text in v) + '}'
{Rammmm,mmmm|qqqq qqqqqqq|zzzzzzzzzzzzz}
{surr.rrrrr|wwwwwwwwwww|xxxxxxxxx}
{Sam ttttt|eeeeeeeee}
{tttttttt}
測試
>>> data = ['1:Rameshrrrrrrr', '2:Sureshmmmmmm', '3:Samkkkkkkkk', '1:tttttttttt', '2:wwwwwwwwwwwwwwwww', '3:yyyyyyyyy', '4:gggggggggg', '1:qqqqqqqqqqq', '2:hhhhhhhhh']
>>> sorted_data = sorted(((int(x),y) for x,y in (el.split(':') for el in data)),key=itemgetter(0))
>>> for k,v in groupby(sorted_data,key=itemgetter(0)):
print '{' + '|'.join(text for num,text in v) + '}'
{Rameshrrrrrrr|tttttttttt|qqqqqqqqqqq}
{Sureshmmmmmm|wwwwwwwwwwwwwwwww|hhhhhhhhh}
{Samkkkkkkkk|yyyyyyyyy}
{gggggggggg}
這是完美的工作。但排序應該是numbers.all 1的第一,所有2的第二,然後3's.But不是文本例如:{Sam ttttt | eeeeeeeee} 我想要這樣,但上面的代碼排序文本也(我不想) 請糾正這是我的mailid: [email protected] – user1335606 2012-04-16 07:49:37
好吧,我添加了'key = itemgetter(0)'到'sorted'函數,所以現在它只按數字排序。 – jamylak 2012-04-16 08:01:31
list = ['1:Rameshrrrrrrr','2:Sureshmmmmmm','3:Samkkkkkkkk','1:tttttttttt','2:wwwwwwwwwwwwwwwww','3:yyyyyyyyy','4:gggggggggg','1:qqqqqqqqqqq ','2:hhhhhhhhh'] 刪除了「key = itemgetter(0)」,並且還嘗試了它的排序文本,我想要這樣的東西。 {Rameshrrrrrrr | tttttttttt | qqqqqqqqqqq} { Sureshmmmmmm | wwwwwwwwwwwwwwwww | hhhhhhhhh} { Samkkkkkkkk | YYYYYYYYY} – user1335606 2012-04-16 08:19:46