You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python从字典列表提取唯一Name对应去重Hash的拼接字符串优化方法

优化实现方案

你原来的代码用列表存储Hash并查重,时间复杂度较高,优化后用set做去重(O(1)查重效率),配合列表推导式可以把核心逻辑压缩到2~3行,完全符合Python开发规范:

方案1(推荐,O(n)时间复杂度,效率最高)

不需要额外依赖,用Python内置字典方法实现:

def test_data():
    return [
        {"Name": "C1", "Hash": "H1"},
        {"Name": "C1", "Hash": "H1"},
        {"Name": "C2", "Hash": "H1"},
        {"Name": "C2", "Hash": "H1"},
        {"Name": "C2", "Hash": "H2"},
    ]

# 核心代码仅2行
items = {}
for d in test_data(): items.setdefault(d["Name"], set()).add(d["Hash"])
final_list = [f"{name}:{','.join(hashes)}" for name, hashes in items.items()]

print("\n".join(final_list))

Python 3.7+版本下,Hash的顺序和原始数据中首次出现的顺序完全一致,和你原有代码输出结果100%匹配。

方案2(单行推导式写法)

如果追求极端的代码简洁,可以用itertools.groupby实现一行生成结果,不过需要先排序,大数据量下效率低于方案1:

from itertools import groupby

final_list = [f"{k}:{','.join({d['Hash'] for d in g})}" for k, g in groupby(sorted(test_data(), key=lambda x:x['Name']), key=lambda x:x['Name'])]
print("\n".join(final_list))

内容的提问来源于stack exchange,提问作者Neil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:54:06