列表存储数据的问题
表达结构化数据时语义不明确
结构化数据指有明确属性、明确表示规则的数据。
字典是Python内置结构化数据
[键:值,键:值……] 键(key)不允许重复 值(value)不允许重复
使用{}创建字典
dict1={} dict2={'name':'zhangsan','sex':‘男’}
使用dict函数创建字段
dict3=dict(name='zhangsan',sex='男')
dict4=dict.fromkeys(['name','sex'],'N/A') 第2个参数可设置默认值
字典取值
dict1['name']
dict1.get('name') dict1.get('nick','匿名') 可以给不存在的key默认值
判断key是否存在字典中 'name' in dict1
遍历字典
for key in dict1: 遍历字典中的key
for key,value in dict1.items(): 遍历字典中的键值对
字典写操作
字典更新 dict[key]=newvalue dict1.update(key1=value1,key2=value2...)
字典新增 有则更新无则新增
删除指定的kv dict.pop('name')
删除最后一个kv dict.popitem()
清空字段 dict.clear()
字典常用操作
设置默认值 dict1.setdefault('num','0') 无则设置有则忽略
获取字典的视图 随着原始数据变化
(1)keys 获取所有的键 dict.keys() 返回一个包装后的列表
(2)values 获取所有的值 dict.values()
(3)items获取所有的键值
利用字典格式化字符串
老版本 dt_str="姓名:%(name)s,性别:%(sex)s"%dict1
新版本 dt_str="姓名:{name},性别{sex}".format_map(dict1)
散列值(hash)
字典也称为“哈希(HASH)”
hash()函数生成散列值
h1=hash('abc') h3=hash(8838)
整数的散列值就是他自己,相同的数据每次生成的散列值都是一致的,每次运行的散列值都是不一样的。数据的唯一标识
字典存储原理
通过每一个KEY对应的HASH来寻找数据,数据在内存中分散存储