How can I use python itertools.groupby() to group a list of strings by their first character?

淺唱寂寞╮ 提交于 2019-11-28 19:54:26
Ignacio Vazquez-Abrams
groupby(sorted(tags), key=operator.itemgetter(0))
Pratik Deoghare

You might want to create dict afterwards:

from itertools import groupby

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


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

just another way,

>>> 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']})
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!