我如何使用python itertools.groupby()按其第一个字符对字符串列表进行分组?

时间:2010-03-18 17:25:27

标签: python string itertools

我有一个类似于此列表的字符串列表:

tags = ('apples', 'apricots', 'oranges', 'pears', 'peaches')

我应该如何使用itertools.groupby()按每个字符串中的第一个字符对此列表进行分组?我应该如何提供itertools.groupby()所需的'key'参数?

4 个答案:

答案 0 :(得分:13)

groupby(sorted(tags), key=operator.itemgetter(0))

答案 1 :(得分:10)

之后您可能想要创建dict

from itertools import groupby

d = {k: list(v) for k, v in groupby(tags, key=lambda x: x[0])}

答案 2 :(得分:5)

>>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
    print(i, list(j))


a ['apples', 'apricots']
o ['oranges']
p ['pears', 'peaches']

答案 3 :(得分:1)

另一种方式,

>>> from collections import defaultdict
>>> t=defaultdict(list)
>>> for items in tags:
...     t[items[0]].append(items)
...
>>> t
defaultdict(<type 'list'>, {'a': ['apples', 'apricots'], 'p': ['pears', 'peaches'], 'o': ['oranges']})