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

Python如何实现值为列表的字典反转,解决列表不可哈希问题

解决方案

核心修改思路

原来的代码直接将原字典的整个值作为新字典的键,一方面会因为列表不可哈希触发报错,另一方面也不符合你要拆分列表元素为新键的需求。修改后逻辑同时兼容值为非列表(字符串、数字等)和列表的场景:

  • 遇到值为列表时,遍历列表内的每一个元素作为新键
  • 遇到值为其他可哈希类型时,保留原有逻辑直接将整体作为新键
  • 新增重复原键过滤逻辑,避免原列表内重复元素导致同一个原键被多次存入新键的列表中

调整后代码

def again(input_dict):
    result_dict = {}
    for key, value in input_dict.items():
        # 列表类型拆分元素作为新键
        if isinstance(value, list):
            for elem in value:
                if elem not in result_dict:
                    result_dict[elem] = []
                # 避免同一个原key重复添加
                if key not in result_dict[elem]:
                    result_dict[elem].append(key)
        # 非列表类型沿用原有逻辑
        else:
            if value not in result_dict:
                result_dict[value] = []
            result_dict[value].append(key)
    return result_dict

效果验证

测试你给出的两个用例:

  1. 普通字符串值字典:
    a = {'A':'red', 'B':'blue', 'C':'cyan'}
    调用返回:{'red': ['A'], 'blue': ['B'], 'cyan': ['C']},符合预期
  2. 列表值字典:
    b = {'A':[1,1,2,4], 'B':[1,2,5]}
    调用返回:{1 : ['A', 'B'], 2 : ['A', 'B'], 4 : ['A'], 5 : ['B']},符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:06