Chr*_*ris 12 python dictionary
我想创建一个由列表索引的字典.例如,我的字典应该如下所示:
D = {[1,2,3]:1, [2,3]:3}
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?如果我只是输入D([1,2,3]) = 1它会返回错误.
Mik*_*ham 18
dict键必须是可清洗的,哪些列表不是因为它们是可变的.您可以在完成后更改列表.想想当用作密钥的数据发生变化时尝试保留字典是多么棘手; 它没有任何意义.想象一下这个场景
>>> foo = [1, 2]
>>> bar = {foo: 3}
>>> foo.append(4)
Run Code Online (Sandbox Code Playgroud)
你会明白为什么Python不试图支持列表作为键.
最明显的解决方案是使用元组而不是列表作为键.
>>> d = {[1, 2, 3]: 1, [2, 3]: 3}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d = {(1, 2, 3): 1, (2, 3): 3}
>>> d
{(2, 3): 3, (1, 2, 3): 1}
>>> d[2, 3]
3
Run Code Online (Sandbox Code Playgroud)