相关疑难解决方法(0)

为什么我不能在python中使用列表作为dict键?

关于什么可以/不能用作python dict的键,我有点困惑.

dicked = {}
dicked[None] = 'foo'     # None ok
dicked[(1,3)] = 'baz'    # tuple ok
import sys
dicked[sys] = 'bar'      # wow, even a module is ok !
dicked[(1,[3])] = 'qux'  # oops, not allowed
Run Code Online (Sandbox Code Playgroud)

所以一个元组是一个不可变的类型,但是如果我在其中隐藏一个列表,那么它就不能成为一个键......难道我不能轻易地隐藏模块中的列表吗?

我有一个模糊的想法,关键是必须"可以",但我只是承认自己对技术细节的无知; 我不知道这里到底发生了什么.如果您尝试使用列表作为键,将哈希作为其内存位置,会出现什么问题?

python dictionary tuples list hashable

82
推荐指数
6
解决办法
9万
查看次数

如何/为什么{frozenset()}中的set()有效?

即使集合不可用,会员检查其他集合工作:

>>> set() in {frozenset()}
True
Run Code Online (Sandbox Code Playgroud)

我期望TypeError: unhashable type: 'set',与Python中的其他行为一致:

>>> set() in {}  # doesn't work when checking in dict
TypeError: unhashable type: 'set'
>>> {} in {frozenset()}  # looking up some other unhashable type doesn't work
TypeError: unhashable type: 'dict'
Run Code Online (Sandbox Code Playgroud)

那么,如何在其他集合中设置成员身份?

python hash set immutability

15
推荐指数
2
解决办法
489
查看次数

标签 统计

python ×2

dictionary ×1

hash ×1

hashable ×1

immutability ×1

list ×1

set ×1

tuples ×1