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

发布于 2024-08-26 05:48:28 字数 209 浏览 7 评论 0原文

我有一个类似于此列表的字符串列表:

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

我应该如何使用 itertools.groupby() 按每个字符串中的第一个字符对该列表进行分组?我应该如何提供 itertools.groupby() 所需的“key”参数?

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()? How should I supply the 'key' argument required by itertools.groupby()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

惯饮孤独 2024-09-02 05:48:28

您可能想随后创建 dict

from itertools import groupby

d = {k: list(v) for k, v in groupby(sorted(tags), key=lambda x: x[0])}

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])}
眼眸印温柔 2024-09-02 05:48:28
groupby(sorted(tags), key=operator.itemgetter(0))
groupby(sorted(tags), key=operator.itemgetter(0))
白馒头 2024-09-02 05:48:28
>>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
    print(i, list(j))


a ['apples', 'apricots']
o ['oranges']
p ['pears', 'peaches']
>>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
    print(i, list(j))


a ['apples', 'apricots']
o ['oranges']
p ['pears', 'peaches']
眼中杀气 2024-09-02 05:48:28

只是另一种方式,

>>> 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']})

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']})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文