说明:本blog基于python3版本
前言
一、dictionary的可更改性和创建
dictionary是python中的一种常见数据类型,中文名叫字典,哈希表或者关联数组;python中的数据类型分为可以更改的数据类型和不可以更改的数据类型,而dictionary属于可以更改数据类型,即可以对dictionary某个位置元素进行二次赋值!,另外,dictionary类型数据相比于tuple,list,string类型数据,有一个不同之处,就是dictionary是以key作为索引,而不是元素的位置作为索引!
我们用代码来重新阐述一下dictionary的这两个基本属性。
首先阐述一下dictionary的第一个属性,可改变性;
比如,我们设置一个叫a的dictionray,值为 1:“a”, 2:“b”
代码如下:
a = {1:"a", 2:"b"}
然后,我们更改dictionary的key为2的值为c,而不是b,如下
a[2] = "c"
print(a)
结果如下,
{1: 'a', 2: 'c'}
很好,我们验证了dictionary的可更改性~
如果你对数据类型的可更改性感兴趣,请参考我的python常用方法系列文章(3)和(4)
二、dictionary的增删元素方法
dictionary的增添元素方法,我这里用一个公式表达:
dictionary[新key] = 新value,需要注意的是,dictionary的key必须是不可更改的数据类型,比如tuple, int, float,string !!!, value值没有要求
代码如下
a = {"a":2, "c":2}
print(a)
a["b"] = 0
print(a)
结果如下
{'a': 2, 'c': 2}
{'a': 2, 'c': 2, 'b': 0}
如果我们使用一个可更改数据类型的元素作为key,那么就会报错!!!
代码如下:
a = {"a":2, "c":2}
print(a)
a[[1,2,3]] = 0
print(a)
结果如下
{'a': 2, 'c': 2}
Traceback (most recent call last):
File "C:\Users\DELL\python-字典学习.py", line 10, in <module>
a[[1,2,3]] = 0
TypeError: unhashable type: 'list'
你get了吗~
接下来,我们介绍两种删除字典元素的方法;一个是del, 一个是pop
我们还是重新定义一个dictionary, 然后分别使用两种方法删除key为asj和1的两个元素
代码如下
a = {'asj': 21, 'cp': 22, 1:"a",(1,2,3):"jijsl"}
print(a)
del a["asj"]
print(a)
a.pop(1)
print(a)
结果如下
{'asj': 21, 'cp': 22, 1: 'a', (1, 2, 3): 'jijsl'}
{'cp': 22, 1: 'a', (1, 2, 3): 'jijsl'}
{'cp': 22, (1, 2, 3): 'jijsl'}
由此可见,我们成功删除了key为“asj”和1的两个元素~
三、dictionary的拼接、list转化dictionary方法
拼接就是使用update方法,但需要注意,如果两个dictionary存在相同的key,那么update括号中的dictionary的key值所对应的value值作为最终的key值所对应的value值输出,简而言之,后来者居上,看后续代码会更好理解~
list转化dictionary可以使用zip方法和dictionary的添加方法来完成
首先我们演示拼接方法:
代码:
a = {1:0,77:1}
print(a)
b = {1:"s", 78:121}
print(b)
a.update(b)
print(a)
结果如下
{1: 0, 77: 1}
{1: 's', 78: 121}
{1: 's', 77: 1, 78: 121}
由上边结果可知,a 和 b中都有1这个key, 但因为b在update括号中,所以最终结果中的以1为key的value值为 “s” 而不是 0, 这会是不是清晰些?
然后,我们演示把两个list分别转化为dictionary的key和value,并本根据位置一一对应起来
首先我们假设两个list分别为 a = [“p”,“q”,“o”] b = [100,102,101], 和一个空dictionary dic = {}
代码如下
a, b, dic = ["p","q","o"], [100,102,101], {}
然后我们让a中的元素作为key, b中的元素作为value
for k, v in zip(a, b):
dic[k] = v
print(dic)
结果如下
{'p': 100, 'q': 102, 'o': 101}
没错,正如我们的expectation!
总结
写在最后,希望本blog对你的python学习有所帮助,欢迎点赞关注~