数据结构论坛

首页 » 分类 » 分类 » python数据类型总结字典
TUhjnbcbe - 2024/10/12 16:26:00
查字典的时候,通常我们会从某个字的特征出发,如拼音或偏旁,最终根据索引,找到这个字。python中,也提供一种数据结构,它包含键和值两个部分,通过键可以快速地找到对应的值。python字典字典通过大括号来声明,可包含若干个键值对。字典是可变的。如下:字典的声明与修改上面的demo也展示了可以通过键来访问字典中的值,通过中括号加键名的方式。当试图访问字典中没有的键时,会报键错误,KeyError。如下:键错误也可以添加一个字典中原来没有的键,如下:添加键也可以通过del来删除字典中的某个键值对,或删除整个字典。但是不能删除字典中没有的键,会报KeyError。如下:del用法上面的demo中,当通过del语句删除了dict1后,再尝试输出dict1。会报NameError,名字错误。提示dict1没有定义。python字典的键和值对于字典来说,值可以是任意的python对象,可以是标准对象,也可以是自定义的对象。键则要求必须是一种不可变的对象。比如说数字,字符串,元组是可以作为键的,而列表,字典则是不行的。如下:键和值的多样性当尝试以一种可变对象作为字典的键时,会报TypeError,类型错误。如下:键类型错误python字典的函数或方法len函数可获取字典中键的个数。(嵌套的不计)str可以将字典以字符串的形式打印。type可获取变量的类型。如下:len,str和typeclear方法可以清空字典中的所有键值对。如下:clear清空copy可基于原字典,通过浅拷贝的方式,创建一个新的字典对象,如下:copy拷贝python中,对象的拷贝存在深拷贝和浅拷贝的区别。这部分内容,后面会有专门的文章聊到。这里,可以按照以下方式简单理解:1.深拷贝下,对象中嵌套的每个对象都会重新复制一份,放在一个新的内存空间中。2.浅拷贝下,只会对对象中的第一层内容做复制,嵌套的内容不会重新复制,而是会继续使用原来的对象。基于以上两条,再对照demo,尝试理解:dict2是通过dict1.copy()得到的。之后,做了两次修改:1.修改了dict1中键a对应的内容。2.修改了dict1中键d对应的值中的键aa对应的内容。为什么修改1的结果没有影响到dict2,而修改2的结果影响到了dict2?fromkeys接受两个参数,参数1为一个序列,参数2是一个对象。该方法将形成一个字典,该字典以参数1序列的每个元素作为键,以参数2对象作为值。当参数2不传时,值为None。如下:fromkeysget方法可以返回字典中某个键对应的值,这种方法,比直接通过中括号+键的访问方式好的地方在于:1.当尝试一个字典中不存在的键时,不会报错,而是返回None。None是python中一个特殊的对象,表示空值,类型是NoneType。2.可通过第二个参数传递一个对象作为默认值,当字典中不存在该键时,返回默认值。如下:get通过in可判断某个键是否在字典中。如下:in当需要对字典内容进行遍历时,可以使用Items或keys或values方法。items会返回一个列表,列表中每个元素是一个元组,元组中包含两个元素,元素0和元素1分别对应字典中的一个键值对。keys方法会返回一个只包含字典中键的列表。values方法会返回一个只包含字典中值的列表。如下:遍历setdefault方法可以在字典中添加一个键值对。它和直接通过小括号+键的方式区别如下:1.当要添加的键在字典中已经存在时,不报错,但添加无效。2.可通过第二个参数传递一个默认值。不传递,则默认为None。setdefault当需要删除字典中某个键时,可使用pop或popitem。pop会删除指定的键,并返回对应的值。popitem则会删除字典中最后一组键值对,并返回一个键值对构成的元组。如下:pop和popitem
1
查看完整版本: python数据类型总结字典