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

Python:从键为元组的字典取值遇TypeError报错的解决方法

字典键为元组时的取值报错解决

问题场景

给定键为元组的字典和基因列表,想要匹配基因列表内的配对并获取对应键值,原代码运行时报错:

cfn = {('A', 'B'): 1, ('A','C'): 2 , ('A', 'D'): 3}
genes = ['A', 'C', 'D', 'E']

原实现函数:

def create_networks(genes, cfn):
    network = list()
    for i in range(0, len(genes)):
        for j in range(1, len(genes)):
            edge = cfn.get([genes[i], genes[j]],0)
            if edge > 0:
                network.append([genes[i], genes[j], edge])

报错信息:TypeError: unhashable type: 'list'

期望输出:

network = [['A','C', 2], ['A', 'D', 3]]

报错原因

字典的键必须是可哈希类型,列表属于不可哈希类型,而目标字典的键是元组,用列表作为查找键时不符合要求,因此触发报错。

解决方案

将查找时的列表改为元组即可,元组是可哈希类型,与字典的键类型匹配。修改后的关键代码行:

edge = cfn.get((genes[i], genes[j]),0)

修正后的完整函数:

def create_networks(genes, cfn):
    network = list()
    for i in range(0, len(genes)):
        for j in range(1, len(genes)):
            edge = cfn.get((genes[i], genes[j]),0)
            if edge > 0:
                network.append([genes[i], genes[j], edge])

运行修正后的代码即可得到期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:31:25