11

このリストに似た文字列のリストがあります。

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

itertools.groupby() を使用して、各文字列の最初の文字でこのリストをグループ化するにはどうすればよいですか? itertools.groupby() で必要な「キー」引数を指定するにはどうすればよいですか?

4

4 に答える 4

21

dict後で作成することもできます:

from itertools import groupby

d = {k: list(v) for k, v in groupby(sorted(tags), key=lambda x: x[0])}
于 2010-03-18T17:48:43.690 に答える
15
groupby(sorted(tags), key=operator.itemgetter(0))
于 2010-03-18T17:26:41.943 に答える
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']
于 2010-03-18T17:26:54.830 に答える
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']})
于 2010-03-18T17:31:07.413 に答える