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

前端 未结 4 1381
迷失自我
迷失自我 2020-12-13 22:30

I have a list of strings similar to this list:

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

How should I go about

相关标签:
4条回答
  • 2020-12-13 23:00
    groupby(sorted(tags), key=operator.itemgetter(0))
    
    0 讨论(0)
  • 2020-12-13 23:01

    You might want to create dict afterwards:

    from itertools import groupby
    
    d = {k: list(v) for k, v in groupby(sorted(tags), key=lambda x: x[0])}
    
    0 讨论(0)
  • 2020-12-13 23:08
    >>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
        print(i, list(j))
    
    
    a ['apples', 'apricots']
    o ['oranges']
    p ['pears', 'peaches']
    
    0 讨论(0)
  • 2020-12-13 23:19

    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']})
    
    0 讨论(0)
提交回复
热议问题