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

如何提取字典中无重复前三高值对应的键(不修改原字典)

问题:提取字典中前三高唯一值对应的键(不修改原字典)

需求说明:
需要实现一个函数,打印由max_frequency函数生成的字典中,前三高无重复值对应的键。原字典允许存在重复值,且绝对不能修改原字典。

示例:
若输入字典为d = {'a':1, 'b':2, 'c':3, 'd':3, 'e':4},仅需打印a : 1、b : 2、c : 3(同值的键任选一个即可),但当前实现会把c和d都打印出来,不符合预期。

当前代码问题分析:

def top3(filename: str):
    """
    Takes dict defined in wd_inventory, identifies top 3 words in dict
    :param filename:
    :return:
    """
    d = max_frequency(filename)
    x = list(d.values())
    x.sort(reverse=True)
    y = set(x)  # 创建了去重集合但未使用
    x = x[0:3]  # 直接取排序后前3个,包含重复值
    for i in x:
        for j in d.keys():
            if d[j] == i:
                print(str(j) + " : " + str(d[j]))
    return
  1. 代码中创建了去重集合y但完全没用到,浪费了去重逻辑
  2. x = x[0:3]取的是排序后包含重复值的前3个元素,导致循环时会把所有对应该值的键都打印出来(比如示例中的两个3会触发两次打印)

修正后的代码:

def top3(filename: str):
    """
    从wd_inventory定义的字典中,找出出现频率前三高的唯一值对应的键
    :param filename:
    :return:
    """
    d = max_frequency(filename)
    # 提取所有唯一值并降序排序
    sorted_unique_values = sorted(set(d.values()), reverse=True)
    # 取前三高的唯一值
    top3_values = sorted_unique_values[:3]
    
    for val in top3_values:
        # 遍历字典找到第一个对应值的键,打印后终止内层循环
        for key, value in d.items():
            if value == val:
                print(f"{key} : {value}")
                break
    return

代码解释:

  1. 用set(d.values())获取字典中所有唯一值,直接排除重复值干扰
  2. 对唯一值降序排序,得到从高到低的有序列表
  3. 取列表前3个元素,就是我们要的前三高无重复值
  4. 遍历每个目标值,在原字典中找到第一个匹配的键值对,打印后用break终止内层循环,确保每个值只打印一个对应键
  5. 全程未修改原字典d,完全符合需求

如果需要返回这些键的列表而非仅打印,可以调整代码如下:

def top3(filename: str):
    """
    从wd_inventory定义的字典中,找出出现频率前三高的唯一值对应的键
    :param filename:
    :return: 包含前三高唯一值对应键的列表
    """
    d = max_frequency(filename)
    top3_values = sorted(set(d.values()), reverse=True)[:3]
    result_keys = []
    
    for val in top3_values:
        for key, value in d.items():
            if value == val:
                result_keys.append(key)
                print(f"{key} : {value}")
                break
    return result_keys

内容的提问来源于stack exchange,提问作者E.Mena14

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:46:37