Python基础汇总005_字典dict和collections.OrderedDict有序字典、pkl文件
1.dict简介
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
注意:python 3.7 中字典是有序的(每次执行打印,顺序不会发生改变),从3.6开始字典都是有序的,并且从3.7开始这成了正式的Python语言特性
如果要使用有序dict,建议用OrderedDict
2.访问字典里的值
可以使用键来取其对应的值,格式:字典名[键名],如下实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print("dict['Name']: ", dict['Name']) print("dict['Age']: ", dict['Age'])
控制台输出:
3.修改字典和向字典中添加新内容
字典是一种动态结构,可随时在其中添加键值对。格式:字典名[键名]=值,如:
修改字典中的值,格式:字典名[键名]=新值,如:
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print('原字典:',dict1) dict1['Age'] = 8 # 更新 Age dict1['School'] = "菜鸟教程" # 添加新的key-value键值对 print("dict1['Age']: ", dict1['Age']) print("dict1['School']: ", dict1['School']) print('修改后字典:',dict1)
控制台输出:
4.字典内置函数
(1) len(dict)函数
计算字典元素个数,即返回字典中键值对的数量
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print(len(dict1))
控制台输出:
(2) str(dict)
输出字典,以可打印的字符串表示。通俗理解:字典转字符串
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} a=str(dict1) print(a)
控制台输出:
5. 遍历字典
(1)遍历所有的键值对
Python 字典内置方法 items() 方法以列表返回可遍历的(键, 值) 元组数组。返回可遍历的(键, 值) 元组数组。
可以使用for循环遍历所有的键值对,如:
dates = {'monday': 1, 'tuesday': 2, 'wednesday': 3, 'thursday': 4, 'friday': 5, 'saturday': 6, 'sunday': 7} print(dates.items()) for key, value in dates.items(): print("key:" + key) print("value:" + str(value))
控制台输出:
D:\softwaretools\anaconda\python.exe D:/pycharmprojects/hoteltest01/hoteltest01/testpy/test14.py dict_items([('monday', 1), ('tuesday', 2), ('wednesday', 3), ('thursday', 4), ('friday', 5), ('saturday', 6), ('sunday', 7)]) key:monday value:1 key:tuesday value:2 key:wednesday value:3 key:thursday value:4 key:friday value:5 key:saturday value:6 key:sunday value:7 Process finished with exit code 0
(2)遍历字典中的所有键
Python3 字典 keys() 方法返回一个可迭代对象,可以使用 list() 来转换为列表。
可以使用keys()方法返回所有的键列表,如:
dates = {'monday': 1, 'tuesday': 2, 'wednesday': 3, 'thursday': 4, 'friday': 5, 'saturday': 6, 'sunday': 7} print(dates.keys()) for key in dates.keys(): print("key:" + key)
控制台输出:
D:\softwaretools\anaconda\python.exe D:/pycharmprojects/hoteltest01/hoteltest01/testpy/test14.py dict_keys(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']) key:monday key:tuesday key:wednesday key:thursday key:friday key:saturday key:sunday Process finished with exit code 0
(3)遍历字典中的所有值
可以使用values()方法,返回字典所有的值列表。如:
dates = {'monday': 1, 'tuesday': 2, 'wednesday': 3, 'thursday': 4, 'friday': 5, 'saturday': 6, 'sunday': 7} print(dates) for value in dates.values(): print("value:" + str(value))
控制台输出:
D:\softwaretools\anaconda\python.exe D:/pycharmprojects/hoteltest01/hoteltest01/testpy/test14.py {'monday': 1, 'tuesday': 2, 'wednesday': 3, 'thursday': 4, 'friday': 5, 'saturday': 6, 'sunday': 7} value:1 value:2 value:3 value:4 value:5 value:6 value:7 Process finished with exit code 0
6.collections.OrderedDict
OrderedDict和Dict一样,但是它记住了item插入到字典的顺序。当对有序字典进行迭代时,item会按照第一次插入到字典的顺序返回。
很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类
OrderedDict,实现了对字典对象中元素的排序
d1 = {'banana': 3, 'apple': 4} d2 = {'apple': 4,'banana': 3} od1 = OrderedDict({'banana': 3, 'apple': 4}) od2 = OrderedDict({'apple': 4, 'banana': 3}) print(od1 == od2) print(d2 == d1)
控制台输出:
7.pkl文件的理解
pkl文件的理解为:
1)python中有一种存储方式,可以存储为.pkl文件。
2)该存储方式,可以将python项目过程中用到的一些暂时变量、或者需要提取、暂存的字符串、列表、字典等数据保存起来。
3)保存方式就是保存到创建的.pkl文件里面。
4)然后需要使用的时候再 open,load。
if config.save_pkl: torch.save(obj=data_dict, f=os.path.join(config.pkl_directory, config.pkl_data))
参考文献:
https://blog.csdn.net/baidu_35218040/article/details/81134563
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-07-29 Springcloud 学习笔记20--项目管理工具Maven(settings文件)、Idea配置maven信息、将代码jar发布到远程仓库以及常用使用技巧