Dict
check if key exists in dict
in
get()
如果key不存在,可以返回None,或者自己指定的valued.get('Tom', -1)
delete a key use pop(key)
正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。
这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
要保证hash的正确性,作为key的对象就不能变。在Python中,string
, int
等都是不可变的,因此,可以放心地作为key。而list
是可变的,就不能作为key:
>>> key = [1, 2, 3]
>>> d[key] = 'a list'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
Set
no duplicate key
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
apis
add(key)
remove(key)
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
Immutable object
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
a.replace()
actually create a new string