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

基于分数去除字典中冗余元组的高效实现方法

解决字典冗余元组的高效方法

要实现这个需求,核心思路是先全局记录每个词的最高分数,再过滤掉分数低于最高值的项。必须遍历所有元组,但这个过程是线性的,效率很高,属于最优解法,具体步骤如下:

步骤1:收集所有词的最高分数

首先遍历整个嵌套字典的所有元组,用一个字典记录每个词对应的最高分数。这一步是必要的——你得先知道每个词的最高分,才能判断哪些元组要删除。

代码实现:

a = {
    'trans': [('pickup', 1.0), ('boat', 1.0), ('plane', 1.0), ('walking', 1.0), ('foot', 1.0), ('train', 0.7455259731472191), ('trailer', 0.7227749512667475), ('car', 0.7759192750865143)],
    'actor': {
        'autori': [('smug', 1.0), ('pol', 1.0), ('traff', 1.0), ('local authori', 0.6894454471465952), ('driv', 0.6121365092485745), ('car', 0.6297345748705596)],
        'fam': [('fa', 1.0), ('mo', 1.0), ('bro', 1.0), ('son', 0.9925431812951816), ('sis', 0.9789254869156859), ('fami', 0.8392597243422916)],
        'fri': [('fri', 1.0), ('compats', 1.0), ('mo', 0.814126196299157), ('neighbor', 0.7433986938516075), ('parent', 0.32202418215134565), ('bro', 0.8496284151715676),  ('fami', 0.6375584385858655), ('best fri', 0.807654599975373)]
    }
}

# 初始化全局最高分数映射
max_scores = {}

def collect_max(data):
    if isinstance(data, list):
        for word, score in data:
            # 更新当前词的最高分数
            if word not in max_scores or score > max_scores[word]:
                max_scores[word] = score
    elif isinstance(data, dict):
        # 递归处理字典里的每个值
        for val in data.values():
            collect_max(val)

# 收集所有词的最高分数
collect_max(a)

步骤2:过滤冗余元组

遍历原字典结构,只保留每个元组中分数等于对应词最高分数的项,生成新字典:

def filter_redundant(data):
    if isinstance(data, list):
        # 过滤列表中分数不是最高的元组
        return [(word, score) for word, score in data if score == max_scores[word]]
    elif isinstance(data, dict):
        # 递归处理字典的每个键值对
        return {key: filter_redundant(val) for key, val in data.items()}

# 生成去重后的新字典
new_a = filter_redundant(a)

# 打印结果验证
import pprint
pprint.pprint(new_a)

运行后得到的结果就是你期望的输出。

关于遍历的必要性

你必须遍历所有元组两次:第一次是收集最高分数(这一步无法跳过,因为你需要全局对比每个词的分数),第二次是过滤冗余。但这两次遍历都是线性时间复杂度O(n)(n是所有元组的总数),已经是最优效率了——不可能在不查看所有元组的情况下,知道哪个词的分数最高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:05:23