我正在尝试将字符串分组,就像地图输出一样。
例如:
String = "
a,a
a,b
a,c
b,a
b,b
b,c"
OP:
a a,b,c
b a,b,c
这种输出是否可以一步完成?
答案 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