Python:仅当字典值对是唯一的时才添加它们。如果它们已经存在,我需要打印字典值

2024-09-29 23:18:11 发布

您现在位置:Python中文网/ 问答频道 /正文

类VoqConnIngressList:

def addEntry(self,voqID, core, nofVoqs, remoteVOQconnector, remoteModID, unitID):
    key = [voqID+","+remoteModID]
    if key not in self.dictOfVoqs:
        self.dictOfVoqs[voqID+","+remoteModID] = [voqID, core, nofVoqs, remoteVOQconnector, remoteModID, unitID]

    else:
        print("Entry already present")

voqConnIngressList.addEntry(10, 30, 40, 50, 60, 1)

voqConnIngressList.addEntry(10, 30, 40, 50, 60, 1)

如果它检测到重复的话。然后我应该打印消息说它是重复的

当我键入此代码时,我得到以下错误

if key not in self.dictOfVoqs: TypeError: unhashable type: 'list'


Tags: keyincoreselfifnotunitidaddentry
3条回答

在代码的第二行key = [voqID+","+remoteModID],您正在将键作为一个列表。键不能是列表。拆下方括号key = voqID+","+remoteModID

定义key变量时不需要这些方括号[]。当你添加这些时,它会变成一个列表。dict上的成员资格检查将通过字典键进行,该字典键的列表不可散列且不符合候选/潜在键的条件:

>>> [] in {}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

只需将该行替换为:

key = voqID + "," + remoteModID

不确定python版本之间是否有差异,但是

字典中的键需要是可哈希的,而列表是不可哈希的(但字符串可以)。 你的钥匙 key = [voqID+","+remoteModID] 是一个列表,因为[] 把它做成一根绳子

相关问题 更多 >

    热门问题