我有一个类似于这个列表的字符串列表:
tags = ('apples', 'apricots', 'oranges', 'pears', 'peaches')
我该如何使用itertools.groupby(),按每个字符串的第一个字符对此列表进行分组?我应该如何提供itertools.groupby()所需的'key'参数?
我有一个类似于这个列表的字符串列表:
tags = ('apples', 'apricots', 'oranges', 'pears', 'peaches')
我该如何使用itertools.groupby(),按每个字符串的第一个字符对此列表进行分组?我应该如何提供itertools.groupby()所需的'key'参数?
dict
:from itertools import groupby
d = {k: list(v) for k, v in groupby(sorted(tags), key=lambda x: x[0])}
groupby(sorted(tags), key=operator.itemgetter(0))
groupby(sorted(tags), key=operator.itemgetter(0))
- sandyp>>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
print(i, list(j))
a ['apples', 'apricots']
o ['oranges']
p ['pears', 'peaches']
只是另一种方式,
>>> 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']})
itertools.groupby()
要求可迭代对象已排序,请参见 https://docs.python.org/3/library/itertools.html#itertools.groupby - Matthew