Python常见方法(5)-dictionary的可更改性和创建、增删元素、拼接和由list生成dictionary详解

本文详细介绍了Python字典的特性,包括其可变性、创建方法,以及增删元素的多种方式。通过示例代码展示了如何更新、添加和删除字典项,同时探讨了字典的拼接与列表转换为字典的方法。学习这些内容将有助于深入理解Python字典的使用。
摘要由CSDN通过智能技术生成

说明:本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学习有所帮助,欢迎点赞关注~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Efred.D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值