主要内容:
小目标:掌握字典相关知识点 主要内容:1.理解字典; 2.字典遍历; 3.字典常用方法;
如果看完这篇文章,你还是弄不明白字典; 你来找我,我保证不打你,我给你发100的大红包。
1.字典基础
1.1 神马是字典? 字典是Python中唯一映射性数据结构,{key:value},且key是唯一的,value可以使任意对象; 字典是一种无序的数据结构; 结构如下:{k1:v1,k2:v2,....kn:vn}1.2 字典定义
d1 = {'a':97, 'b':98} d2 = {'name':'sun','age':10} print(d1) print(d2)
结果:
{'a': 97, 'b': 98} {'name': 'sun', 'age': 10}1.3 字典访问 使用key访问元组
d = {1: 2, 3: 4} print(d) #key:1,对应的值 print('d[1]:',d[1])
结果:
{1: 2, 3: 4} d[1]: 21.4 字段修改 使用key修改或者增加元素
d = {1: 2, 3: 4} d[1]=10 print(d) d['5'] = 'five' print(d)
结果:
{1: 10, 3: 4} {1: 10, 3: 4, '5': 'five'}1.5 字典实质: 字典结构:不是k->v,而是:hash(k)->v 理解:先将key左hash处理,生成一个字符串ID,然后这个ID对应v 注意点:只有不可变数据结构才可以hash,例如:数字,元组,字符串,列表不可以。 例如:
#key是一个列表 d1 = {[1]:1}
错误:TypeError: unhashable type: 'list'
1.6 字典中key必须是唯一的示例:
d = {1:1,1:'one'} print(d) d1 = {1:'one',1:1} print(d1)
结果,最后一个有效:
{1: 'one'} {1: 1}1.7 dict创建字典
dict函数:
dict():创建空字典 dict(mapping):创建字典#dict方法,每个列表中元素为可迭代对象,每个对象只有两个元素, #注意:第一个元素必须可以hash d1 = dict([['name','sun'],['score',90]]) print(d1) #列表每个元素为元组,元组只有两个元素 d3 = dict([(1,2),(3,4)]) print(d3) #列表每个元素为字符串,字符串只能有两个字符 d2 = dict(['12','34']) print(d2) #元组每个元素为列表,列表只能有两个元素 d4 = dict((['name','li'],['score',91])) print(d4)
结果:
{'name': 'sun', 'score': 90} {1: 2, 3: 4} {'1': '2', '3': '4'} {'name': 'li', 'score': 91}
2 字典相关操作:
2.1 常用函数 len(obj, /):返回字典长度 sum(iterable, start=0, /):对字典所有value求和,value必须支持加法操作且是一种类型对象 max(iterable, *[, default=obj, key=func]):获取字典value中最大值 in:key in d,判断key是否在d中,存在返回True,否则返回False示例:
d = dict([(1,2),(3,4)]) print('len(d):',len(d)) print('sum(d):', sum(d)) print('max(d):', max(d))
结果:
len(d): 2 sum(d): 4 max(d): 32.2 字典遍历
d = dict([(1,2),(3,4)]) #获取字典所有key for key in d: print(key) #遍历字典: for key in d: print(key,d[key])
3. 字典相关方法
3.1 fromkeys dict.fromkeys(iterable, value=None, /):根据序列创建字典,每个字典值为value 示例:keys = 'abcd' #字典value默认为None d = dict.fromkeys(keys) print(d) #字典value默认为-1 d = dict.fromkeys(keys,-1) print(d)
结果:
{'a': None, 'b': None, 'c': None, 'd': None} {'a': -1, 'b': -1, 'c': -1, 'd': -1}3.2 获取字典相关值 方法 说明 D.keys() 获取字典所有Keys, D.values() 获取字典所有values, D.items() 获取字典每个item
示例:
d = dict([('name','sun'), ('age',18)]) #获取keys,keys为可迭代对象 print(d.keys()) #获取values,values为可迭代对象 print(d.values()) #获取每个item print(d.items()) #遍历kv for k,v in d.items(): print(f'{k}:{v}',end=',')
结果:
dict_keys(['name', 'age']) dict_values(['sun', 18]) dict_items([('name', 'sun'), ('age', 18)]) name:sun,age:18,3.3 获取字典key对应的值 一般方式:d[key],问题,如果key不在d中报错 dict.get(key, default=None, /):获取key对应值,不存在返回default 推荐使用dict.get方法获取key对应的值 示例:
d = dict([('name','sun'), ('age',18)]) print('name:', d.get('name', 'unknow'),'sex:', d.get('sex', 'unknow'))
结果:name: sun sex: unknow
3.5:setdefault方法 dict.setdefault(self, key, default=None, /):如果key存在,返回key对应的值,否则字典中添加元素,key:defatult示例:
d = {1: 2, 3: 4} print(d.setdefault(1,'one')) #d并没有改变 print(d) #增加新的元素 d.setdefault('one', 1) print(d)
结果:
2 {1: 2, 3: 4} {1: 2, 3: 4, 'one': 1}3.6 字典删除 D.pop(k[,d]):返回并删除k对应的元素,如果k在dict中不存在且设置d,返回d,否则报异常 D.popitem():返回一组k-v,并删除 D.clear():清空字典
示例:
d = dict.fromkeys('1234', -1) print(d) print('pop(1):',d.pop('1')) #删除一组元素 print(d.popitem()) #清空字典 d.clear() print(d)
结果:
{'1': -1, '2': -1, '3': -1, '4': -1} pop(1): -1 ('4', -1) {}3.7 字典更新 D.update([E, ]**F),E为字典,F为可迭代对象(k,v) 操作结果:for k in E: D[k] = E[k] 示例
d = dict.fromkeys('1234', -1) print(d) d1 = {'1':'one', '5':'five'} d.update(d1) print(d)
结果:
{'1': -1, '2': -1, '3': -1, '4': -1} {'1': 'one', '2': -1, '3': -1, '4': -1, '5': 'five'}
以上就是字典常用的操作;
总结重点:
字典一种无序的映射性数据结构; 理解key的处理,及hash 字典遍历方式查看更多关于21天学习python编程_字典的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did170266