简体   繁体   English

如何使用 python itertools.groupby() 按第一个字符对字符串列表进行分组?

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

I have a list of strings similar to this list:我有一个类似于此列表的字符串列表:

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

How should I go about grouping this list by the first character in each string using itertools.groupby()?我应该如何使用 itertools.groupby() 按每个字符串中的第一个字符对该列表进行分组? How should I supply the 'key' argument required by itertools.groupby()?我应该如何提供 itertools.groupby() 所需的“key”参数?

You might want to create dict afterwards:您可能想在之后创建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))
>>> 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']})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM