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

Python内置四种基本container:list, dict, set, tuple,collections模块为其补充。OrderedDict为collections中一个容器。一言以蔽之,是为记住插入顺序的dict.

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

posted @ 2020-07-29 18:19  雨后观山色  阅读(569)  评论(0编辑  收藏  举报