Как я могу использовать Python itertools.groupby () для группировки списка строк их первым символом?

У меня есть список строк, подобных этому списку:

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

Как я должен пойти о группировке этого списка первым символом в каждой строке с помощью itertools.groupby ()? Как я должен предоставить 'ключевой' аргумент, требуемый itertools.groupby ()?

7
задан Adam Ziolkowski 18 March 2010 в 17:25
поделиться

4 ответа

groupby(sorted(tags), key=operator.itemgetter(0))
13
ответ дан 6 December 2019 в 06:03
поделиться

Вы можете впоследствии создать dict :

from itertools import groupby

d = {k: list(v) for k, v in groupby(tags, key=lambda x: x[0])}
11
ответ дан 6 December 2019 в 06:03
поделиться
>>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
    print(i, list(j))


a ['apples', 'apricots']
o ['oranges']
p ['pears', 'peaches']
{{1} }
5
ответ дан 6 December 2019 в 06:03
поделиться

просто другой способ,

>>> 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']})
1
ответ дан 6 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: