整型(integer)、字符串(string)和元组(tuple)都是immutable,而列表(list)、字典(dictionary)、集合(set)都是mutable
哈希表是在一个关键字和一个较大的数据之间建立映射的表,能使对一个数据序列的访问过程更加迅速有效。用作查询的关键字必须唯一且固定不变,于是只有immutable的对象才可以作为关键字,也叫hashable.
如上所述,整型(integer)、字符串(string)和元组(tuple)都可以作为关键字,而list不可以。
为什么 list 是不可哈希的,而 tuple 是可哈希的
(1)因为 list 是可变的在它的生命期内,你可以在任意时间改变其内的元素值。
(2)所谓元素可不可哈希,意味着是否使用 hash 进行索引
(3)list 不使用 hash 进行元素的索引,自然它对存储的元素有可哈希的要求;而 set 使用 hash 值进行索引。
字典的基础应用
字典中存储的数据是没有顺序的
1.取值
(1)根据key来取值
dict_1['key'] = value
(2)get(key, default)
获取字典中对应的key值,如果key不存在,则取默认值,key存在就取key对应的值
2.添加数据
dict_1['key'] = value
如果key不存在,则添加数据,如果key存在,修改key对应的值
3.删除数据
(1)del dict_1['key']
(2)删除所有元素
dict_1.clear()
(3)dict_1.pop(key)
删除字典给定键key所对应的值,返回值为被删除的值
(4)dict_1.popitem()
随机返回并删除字典中的一对键和值
site= {'name': '我的博客地址', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
pop_obj=site.popitem() # 随机返回并删除一个键值对
print pop_obj # 输出结果可能是{'url','http://blog.csdn.net/uuihoo/'}
4.获取字典中所有的key
keys = dict_1.keys()
5.获取字典中所有的value
values = dict_1.values()
6.获取字典中所有的键值对
items = dict_1.items()
7.判断字典中是否拥有某个key
if 'phone' in dict_1.keys():
print('有这个key')
8.update实例
D = {'one': 1, 'two': 2}
D.update({'three': 3, 'four': 4}) # 传一个字典
print(D)
{'one': 1, 'three': 3, 'two': 2, 'four': 4}
D.update(five=5, six=6) # 传关键字
print(D)
{'one': 1, 'four': 4, 'six': 6, 'two': 2, 'five': 5, 'three': 3}
D.update([('seven', 7), ('eight', 8)]) # 传一个包含一个或多个元祖的列表
print(D)
{'one': 1, 'eight': 8, 'seven': 7, 'four': 4, 'six': 6, 'two': 2, 'five': 5, 'three': 3}
D.update(zip(['eleven', 'twelve'], [11, 12])) # 传一个zip()函数
print(D)
{'one': 1, 'eight': 8, 'seven': 7, 'four': 4, 'eleven': 11, 'six': 6, 'twelve': 12, 'two': 2, 'five': 5, 'three': 3}
D.update(one=111, two=222) # 使用以上任意方法修改存在的键对应的值
print(D)
{'four': 4, 'seven': 7, 'twelve': 12, 'six': 6, 'eleven': 11, 'three': 3, 'one': 111, 'eight': 8, 'two': 222, 'five': 5}
网友评论