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

Ada*_*ski 7 python string python-itertools

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

tags = ('apples', 'apricots', 'oranges', 'pears', 'peaches')
Run Code Online (Sandbox Code Playgroud)

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

Ign*_*ams 13

groupby(sorted(tags), key=operator.itemgetter(0))
Run Code Online (Sandbox Code Playgroud)


Pra*_*are 11

您可能想要dict事后创建:

from itertools import groupby

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

  • @leleogere `itertools.groupby()` 需要对可迭代进行排序,请参阅https://docs.python.org/3/library/itertools.html#itertools.groupby (2认同)

Sil*_*ost 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']
Run Code Online (Sandbox Code Playgroud)