Python中列表不能作为字典的键
(2008-07-09 14:09:15)
标签:
pythonlistip会报 |
分类: Python |
真的是把我搞死了……
Python中list实例是不能当作dict的关键字的!
例如:
ip = [ '127.0.0.1', '192.168.0.1' ]
ips = {}
ips[ ip ] = 'someip'
会报错:list object cannot be unhashed.
我想是因为字典的关键字必须是不可变的(unmutabl),而列表是本地可变的(mutable),所以不能用list来作为关键字。如果真的需要上面代码中类似的功能,可以将list转变为tuple即可。例如:
tuple( [1,2,3] ) 即得到:(1,2,3)。而tuple是本地不可变的,所以可以作为字典的关键字。
Python中list实例是不能当作dict的关键字的!
例如:
ip = [ '127.0.0.1', '192.168.0.1' ]
ips = {}
ips[ ip ] = 'someip'
会报错:list object cannot be unhashed.
我想是因为字典的关键字必须是不可变的(unmutabl),而列表是本地可变的(mutable),所以不能用list来作为关键字。如果真的需要上面代码中类似的功能,可以将list转变为tuple即可。例如:
tuple( [1,2,3] ) 即得到:(1,2,3)。而tuple是本地不可变的,所以可以作为字典的关键字。
前一篇:Python中如何删除一个文件
后一篇:STL中的vector