python - 从 O(n) 中的列表生成分类数据集

标签 python algorithm

我正在尝试从具有属性 prop1prop2 的项目列表中生成具有以下结构的数据集:

result[p1][p2] => prop1=p1 和 prop2=p2 的项目列表

我已经能够在 O(n2) 中完成它:

result = {
    item.prop1: {
        item.prop2: [
            i
            for i in item_list
            if i.prop1 == item.prop1 and i.prop2 == item.prop2
        ]
    }
    for item in item_list
}

但是一直没能找到在更短的时间内做到这一点的方法。是否有可能在 O(n) 中实现?

最佳答案

您应该只需要遍历项目一次:

from collections import defaultdict

result = defaultdict(lambda: defaultdict(list))
for item in item_list:
    result[item.prop1][item.prop2].append(item)

关于python - 从 O(n) 中的列表生成分类数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38820229/

相关文章:

python - 如何在正则表达式中获得重叠的文本匹配

python - Airflow mysql 到谷歌云存储,byte-like object required 错误

python - PyQt5 和异步 : yield from never finishes

ios - 自适应精度算法/方程

python - 将 namedtuple 映射为字典

python - 给定字符串垂直翻转(反转)图像?

algorithm - 如何取两个非常大的数的模数?

javascript - 一种查找数字序列以填充正方形网格的算法

c++ - 加权 boolean 值 - 缩放

algorithm - 如何确定一个点是否位于 3D 三角形上