在 Python 中按列表中的项目分组

Posted

技术标签:

【中文标题】在 Python 中按列表中的项目分组【英文标题】:Grouping by items in list of lists in Python 【发布时间】:2021-08-18 00:28:43 【问题描述】:

我有一个如下所示的 Python 列表:

mylist = [[1,apple,orange,banana],[2,apple],[3,banana,grapes]]

我怎样才能把它变成这样的东西:

new_list = [[apple,1,2],[orange,1],[banana,1,3],[grapes,3]

基本上我想创建新的列表列表,该列表由原始列表列表中的每个水果分组,第一个索引中的数字

【问题讨论】:

到目前为止你做了什么?几个 for 循环和一个 dict 应该能让你走得很远。 (如果你愿意分享你的尝试,我们可以帮助解决它) 欢迎来到 Stack Overflow!您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题 【参考方案1】:

您可以使用defaultdict 对每个水果的索引进行分组,然后连接键和值

from collections import defaultdict
mylist = [[1, "apple", "orange", "banana"], [2, "apple"], [3, "banana", "grapes"]]

result = defaultdict(list)
for idx, *fruits in mylist:
    for fruit in fruits:
        result[fruit].append(idx)
print(result)  # 'apple': [1, 2], 'orange': [1], 'banana': [1, 3], 'grapes': [3]

result = [[key, *values] for key, values in result.items()]
print(result)  # [['apple', 1, 2], ['orange', 1], ['banana', 1, 3], ['grapes', 3]]

【讨论】:

以上是关于在 Python 中按列表中的项目分组的主要内容,如果未能解决你的问题,请参考以下文章

在python中按半小时间隔对文件列表进行分组

减去熊猫(Python)中按id分组的数据框中的连续行

在 Python 中按列分组以获得总计数

在 SwiftUI 中按 ID 删除列表中的项目

在Python中按属性获取对象列表中的索引

如何在python中按模式分组? [复制]