对字符串中的行进行排序,分组数据

时间:2014-02-23 01:49:32

标签: python

我正在尝试将字符串分组,就像地图输出一样。

例如:

String = "
    a,a
    a,b
    a,c
    b,a
    b,b
    b,c"

OP:

a a,b,c
b a,b,c

这种输出是否可以一步完成?

3 个答案:

答案 0 :(得分:5)

使用内置sorted

In [863]: st=sorted(String.split())
Out[863]: ['aa', 'ab', 'ba', 'bb']

打印它:

In [865]: print '\n'.join(st)
aa
ab
ba
bb

list.sort对列表进行排序并返回None,这就是为什么当print(lines.sort())没有显示任何内容时!按lines.sort(); prnit(lines);)

显示您的列表

答案 1 :(得分:2)

请注意list.sort()就地排序列表,并且返回新列表。这就是为什么

print(lines.sort())

正在打印None。尝试:

lines.sort()    # This modifies lines to become a sorted version
print(lines)

或者,有内置的sorted()函数,它返回列表的已排序副本,原始未修改。像这样使用它:

print(sorted(list))

答案 2 :(得分:1)

因为到目前为止,其他答案都集中在排序上,我想为分组问题做出贡献:

String = """
    a a
    a b
    a c
    b a
    b b
    b c"""

pairs = sorted(line.split() for line in String.split('\n') if line.strip() )

from operator import itemgetter
from itertools import groupby
for first, grouper in groupby(pairs, itemgetter(0)):
    print first, "\t", ', '.join(second for first, second in grouper)

Out:
a   a, b, c
b   a, b, c