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

Python 对字符串中的行进行排序,分组数据,python,Python,我正在尝试像映射输出一样对字符串进行分组 例: 作品: 这种类型的输出是否可以在一个步骤中完成???使用内置的排序的: 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,这就是为什么当您打印(lines.sort())时,它不会显示任何内容!通过行显示列表。s

我正在尝试像映射输出一样对字符串进行分组

例:

作品:


这种类型的输出是否可以在一个步骤中完成???

使用内置的
排序的

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
,这就是为什么当您
打印(lines.sort())
时,它不会显示任何内容!通过
行显示列表。sort();prnit(行)
;)

使用内置的
排序的

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
,这就是为什么当您
打印(lines.sort())
时,它不会显示任何内容!通过
行显示列表。sort();prnit(行)
;)

注意,对列表进行适当排序,不会返回新列表。这就是为什么

print(lines.sort())
正在打印
None
。尝试:

lines.sort()    # This modifies lines to become a sorted version
print(lines)
或者,还有一个内置函数,它返回列表的一个排序副本,而不修改原始副本。像这样使用它:

print(sorted(list))
请注意,对列表进行适当排序,不会返回新列表。这就是为什么

print(lines.sort())
正在打印
None
。尝试:

lines.sort()    # This modifies lines to become a sorted version
print(lines)
或者,还有一个内置函数,它返回列表的一个排序副本,而不修改原始副本。像这样使用它:

print(sorted(list))

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

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

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

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

您使用的python shell是什么?@JonathonReinhart ipython QTConsole您使用的python shell是什么?@JonathonReinhart ipython QTConsole如果分隔符是逗号而不是空格,我该怎么办?@user1919035
line.split(',')
而不是
line.split()
。也许您必须删除字母周围的空白:
map(str.strip,line.split(','))
我没有找到实现map(str.strip,line.split(','))@user1919035而不是
line.split()
如果分隔符是逗号而不是空格该怎么办?@user1919035
line.split(',')
而不是
line.split()
。也许您必须删除字母周围的空白:
map(str.strip,line.split(','))
我没有找到实现map(str.strip,line.split(','))@user1919035而不是
line.split()