第七章 掌握Python中的字典类型

1.1 彻底掌握字典的基础概念
理解字典类型(dict)
Python中的字典类型是用{}大括号括住的一个数据集合,每个元素用逗号隔开。每个元素是一个键值对('键名':键值)。
例: 
contain = {'a':100,'b':200}

 

2.1 彻底掌握字典的操作方法
字典常用的操作方法
in / not in :查找键名是否在dict里面 。
例:if 'a' in {'a':1,'b':2}
dict[key]:返回键值。
例:contain = {'name':'ji','age':12} print(contain['age']) # 12
dict.get(key,default=None):获取dict中的key,假如不存在,则用default的值替代。
例:print(contain.get('c',0)) # 0
dict.keys():返回dict的所有键名,保存在dict_keys中,是一个可迭代对象。
例:contain = {'a':1,'b':2} print(contain.keys()) # dict_keys(['a', 'b'])
dict.values():返回dict所有键值,保存在dict_values中,是一个可迭代对象。
例:contain = {'a':1,'b':2} print(contain.values()) # dict_values([1,2])
dict.items():返回所有键值对,保存在dict_items中,是一个可迭代对象。
例:contain = {'a':1,'b':2} for x,y in contain.items(): print(x,'-->',y)   # a-->1  b-->2
dict[key]= value:修改/添加dict中key的键值为value。
例:contain={'a':1,'b':2} contain['a'] = 0 contain['c'] = 1 
# {'a':0,'b':2,'c':1}
dict.setdefault(key,default = None):返回key对应的键值(类似get()方法),假如不存在,则添加成新的键值对在dict中,键名为key,键值为default中的值(默认None)。
例:contain = {} print(contain.setdefault('a')) # None  contain = {'a',None}
dict.update(iterable):iterable是一个可迭代对象(主要是字典,元组,列表),通过字典对象来更新字典,如果键名存在,则更新,如果不存在,则新增。
例:contain = {'a':1} contain.update({'b':2,'a':3}) print(contain) # contain = {'a':3,'b':2}
dict.pop(key):删除dict中键名为key的元素。
例:contain = {'a':1} contain.pop('a') print(contain) # contain = {}
dict.clear():一键清空所有键。

 

3.1 使用字典进行格式化
使用%进行格式化
使用字典进行格式化,主要是通过关键字占位符来进行的,关键字对应字典中的key。
语法:%(key)占位符%(dict)

比如:
contain = {'name':'ji','price':22.2}
print('姓名:%(name)s,价格:%(price)0.2f'%(contain))  # 姓名:ji,价格:22.20

 

使用format进行格式化
与字符串的format用法一致,用{}括起来,用来传递参数
语法:'{param[key]}'.format(param = dict)
比如:
contain = {'name':'ji','price':22.2} 
print('姓名:{con[name]}'.format(con = contain)) # 姓名:ji

 

使用**对字典进行解包
语法:'{key}'.format(**dict)
比如:
contain = {'name':'ji','price':22.2} 
print('姓名:{name}'.format(**contain)) # 姓名:ji
也可以直接使用关键字的形式进行传递,实现的是一样的效果
比如:
print('姓名:{name}'.format(name = contain['name'])) # 姓名:ji

 

格式化操作的优缺点
使用%进行格式化,需要匹配对应的格式符号,比较容易出现类型转换的错误
最好使用**对字典进行解包,不会进行类类型检查,可读性强。

 

4.1 彻底掌握字典的高级概念
键的输出顺序
Python中的字典类型基于哈希表。在Python3.6前,输出顺序基于键所在哈希表中的存储顺序,3.6以后取决于键插入的先后顺序

 

键的数据类型
字典中的键必须是静态的数据类型,因为哈希表的特性,如果键名是动态的,那么在这个类型的生命周期内,就不能保证计算的哈希值是唯一的(哈希值必须唯一)。

 

字典的快速查找
1.字符串,列表,元组是线性结构,在不对序列结构进行处理的情况,对元素的查找需要从头开始进行遍历。

假设列表中有1000W个元素,那么按照这个方式最慢得遍历1000W次,由此可见查询效率非常低下。

2.字典是采取哈希表进行实现的。

哈希表中的3 0 2 1代表的是哈希值,是通过内置的哈希函数计算的。通过索引值(哈希值)可以快速定位到数据表的元素,相当于SQL中的聚集索引。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值