我有一个类似这样的Python代码:
if key in dict:
dict[key].append(some_value)
else:
dict[key] = [some_value]
但我想应该有某种方法可以避开这个 "if" 语句。我尝试过:
dict.setdefault(key, [])
dict[key].append(some_value)
和
dict[key] = dict.get(key, []).append(some_value)
但两者都抱怨“TypeError:unhashable type:'list'”。有什么建议吗?
key
是一个列表对象,而不是可哈希的,因此不能用作字典键。 - Martijn Pietersdict.setdefault(key, [])
时,实际上是在调用'dict'类对象上未绑定的setdefault方法。它将'key'视为自身指针,并尝试使用'[]'作为索引。只需创建自己的变量mydict = dict()
,您就可以进一步了。 - tdelaneydict = {}
。这是一个坏主意,因为它掩盖了内置函数。如果dict
仍然是内置函数,则异常情况会有所不同:TypeError: descriptor 'setdefault' requires a 'dict' object but received a 'str'
(对于key
中的str
值)。 - Martijn Pietersdict = {}
掩盖了一个内置函数。我的错。谢谢! - Fysx