首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python(四)字典

装一下

字典也是一个常见的数据类型,例如:

这样一个返回值,就可以看做一个标准的字典

其实处理起来也是比较简单的,下面开始看关于字典的内容

定义

字典是一个由键值对(key,value)组成、由冒号“:”分隔,存储在大括号“{}”中的数据类型。

其中键必须是唯一不重复的,而值可以相同

当然,字典在创建时,如果键相同,出现提示“字典包含重复键”,如下:

键也是不能变化的,所以键可以是数字、字符串或者元组,而不能是列表

字典是无序的,不能通过索引取值,只能通过key取值,如:

这种写法会被认为是取字典中,key是0的那个值,由于字典中并没有这个key,报错

value可以是任意类型,甚至可以是自定义类型

创建字典

创建字典的方式有以下几种:

其中是字典的一个内置方法,后面再说

访问字典内的值

访问单个元素

上边说过,字典是无序的,访问字典的值只能够通过key,例如:

运行一下

访问字典的值,需要将字典的key写在方括号中,需要注意key的数据类型,不能写错

字典dict1中key:“b”,对应的值是2,而key:“e” 并不在字典dict1中,所以出现报错,这个上边见过

遍历字典里的值

运行结果:

更新字典、添加值

更新字典

字典中存在对应key,给当前key重新赋值,便能更新字典里的对应值

将dict[“a”]重新赋值(100),然后打印字典,运行结果:

这样就更新了字典

添加值

字典中部队在对应的key,直接给新增key赋值,就能给字典新增一个键值对

由于“f”并不是dict中的key,所以给key赋值,会添加到字典中

运行结果:

添加字典

除了向字典中添加值外,还可以将一个字典并入另一个字典

运行结果:

复制字典

将字典直接赋值给一个变量

这种复制方式复制的dict2,与dict1的id是一样的,说明他们其实用的是同一个内存地址存的值,而当dict1中的值发生变化时,对应内存的值变了,自然dict2的值也变了

使用内置函数复制

.copy()方法复制的字典,是将内存中存的字典复制了一份放到了另一个内存地址,新的字典引用新的内存地址。

如果被复制的字典中包含子对象,子对象的引用地址仍相同。子对象改变,仍会同时影响两个字典

以下结果,通过对象的ID能发现引用情况:

删除元素

删除单一元素

删除了字典中key是“a”的键值对,所以结果:

清空字典

这是字典的一个方法,清空的是字典内的所有内容,所以结果:

删除字典

del字典操作,将对应字典从内存中删除了,所以在打印的时候没有dict1,会导致报错如下

字典的内置函数

len(dict)

这个函数计算字典中的key数量,运行结果:

str(dict)

将字典转换成字符串,这样可以直接打印,运行结果:

字典的内置方法

.clear()

上边说过,清除字典内所有元素

.copy()

浅复制一个字典,在复制字典时介绍过,基本上没有其他知识点了

.fromkeys(seq,val =None)

该来的总会来,之前犯懒不想写的现在也要介绍了

该方法会创建并返回一个新的字典,以seq中的元素作为新字典的键,val作为新字典的值,而默认值为None

举几个例子一看就能明白了:

无论是空字典还是有内容的字典,在使用之后都会生成一个新的字典。前三个分别用了列表、元组、字符串作为key,0作为值, 第四个未指定value,默认value为None,并且在运行后,都生成了新的字典,运行结果:

这里有个需要注意的点,虽然.fromkeys()是内置方法,但并不改变当前字典,只是新建字典

来看一个例子:

在“对dict1操作”后,打印dict1,发现dict1仍然与之前一样,没有任何变化。然后打印两个字典的id,可以看出,已经是不同的两个字典

.get(key,default = None)

这个方法也能够返回字典里的值,当字典里面有“key”,返回对应value;字典里面没有“key”,返回定义的值(未定义为None)

运行结果:

.setdefault(key,default = None)

这个方法也能够返回字典里的值,当字典里面有“key”,返回对应value;字典里面没有“key”,插入对应的key和value(未定义值为None)

存在”a”、”b”,返回对应字典里面的值

不存在”n”,且未定义值,将key → “n”、value→None

不存在“m”,且定义了值,将(“m”,”hehe”)插入字典

key in dict

如果存在,返回True;如果不存在,返回False

如果不存在,返回True;如果存在,返回False

运行结果:

.items()

返回可遍历的类型

遍历字典:

运行结果:

可以发现,遍历的时候 返回的是key、value组成的元组

.keys()

返回由组成的类型数据,可直接转换成列表。

运行结果:

.values()

返回由组成的类型数据,可直接转换成列表。

运行结果:

.update()

上边见过,现在看一种情况,如果添加的字典中的key与原字典中的key存在相同的,则更新对应key的值

运行结果:

.pop(key[,default])

返回被删除的值,如果字典中没有对应的key,则返回定义的值,未定义值是会报错~报错报错~

运行结果:

.popitem()

随机返回并删除字典中的一个键值对

代码中将循环次数加一,会超出字典元素数量,所以字典内的元素会先被全部删除,之后再次调用方法,这时由于字典已经是空的,出现报错。

运行结果:

宝爷镇楼~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190110G1CRG000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券