一、字典
例如我们要查找一个单词,肯定不能逐字逐句地查找。应该直接找到这个单词的区域,接着找到这个单词,最后找到这个单词的含义。Python中也是有字典的。Python中把单词称为键(key),把单词的含义称为值(value)。字典是Python的唯一一个映射类型。映射是来自数学的一个术语,原本是指两个元素集之间,元素相互对应的关系。彼此建立一对一或者一对多的关系,我们称为映射。
映射类型区别于序列类型,序列类型是以数组的方式存储的。通过索引的方式来取得相应位置的值。一般索引值和对应存储的数据是没有关系的。
字典的使用很简单,字典的标志性符 是大括 {},字典不是序列类型,而字符串,元组,它们都是序列类型,字典是映射类型。
字典由多个键,和其对应的值共同构成。上面的例子,’李宁’,’耐克’,’阿迪达斯’,’清菡’,我们称为键。’一切都有可能’,’爱干不干’,’好好干’,’加油’,我们称为对应的值。
创建空的参数。
可以通过关键字的形式,key+value的形式来创建字典。通过关键字创造字典,它的排序也会发生变化。上面“清菡”这里是没有引 的,如果加上引 ,就会 错。不能是个表达式。
直接给字典的键赋值:如果这个键,本来是这个字典里存在的,则改写键对应的值。如果这个键是不存在的,它不会 错,直接创建新的键,并为它赋值。
二、 字典和序列的不同
字典是比序列更加实用的映射类型。Python唯一的一个映射类型就是字典。如果在序列中试图为一个不存在的位置赋值,赋值的时候它会 错。如果在字典中,会自动创建相应的键并添加对应的值进去。dict不是个普通的函数,它是个工厂函数,实际上是个类型,调用它会生成该类型的一个实例,就像工厂一样,我们称之为“工厂函数”。就像str(),int(),list(),tuple()等这些都是工厂函数。
三、字典的内键方法
第一个参数S是字典的键值,第二个参数V是可选的,就是对应键值对应的值。如果第二个参数不提供的话,默认就是none。
下面初始化定义个空的字典。第二个参数不提供的话,默认就是none。
如果设置为Number,对应的值分别就是number。
不要试图这样修改,它不会依次展开修改,会把第二个参数整个元组当成是你需要设置给它们默认的值。只能是每一个参数,设置为每一个的值。
试图用它批量修改字典的值也是不可以的,它不是只是修改1和3对应的值,它是重新创造一个新的字典。
访问字典的几个方法:
keys(),values(),items().
keys()访问字典键的引用。打印出其所有的键。
items()是打印出整个项。
把项以元组的形式括起来,打印出来,把32个项都打印出来了。
有时不知道提供的项在字典中是否存在,如果不存在,可能会 错。例如索引字典中一个不存在的键的时候可能会出错。
get方法采用了更宽松的方式去访问字典的项。如果试图访问字典中不存在的键的时候,就会打印None。
如果希望找不到值的时候返回一个具体的值。可以这样设置:
如果有的话,就会打印出这个值。
如果不知道一个键是否在字典中,可以用成员资格操作符来进行判断。
字典中检查键的成员资格比序列更加高效。当数据规模相当大的时候,两者差距会很明显。值得注意的是,这里的查找的是键而不是值。而在序列里我们查找的是元素的值而不是元素的索引 。
我们清空一个字典,建议清空的是clear方法。
很多朋友们喜欢下面这样写,可以这样写,但是不严谨。a等于空的字典,a就是空的,b还是存在的。clear是清空整个字典的。
copy方法是浅拷贝。赋值不是浅拷贝。赋值之后地址是一样的,浅拷贝后地址是不一样的。直接赋值指向同一个数字,只是贴了不同的标签在相同的数据上。浅拷贝是一种拷贝,是对对象表层的一种拷贝。举个例子:
pop:给定键弹出对应的值。popitem是随机从字典里弹出对应的项。
setdefault和get方法类似,setdefault在字典中找不到对应的键的时候会对应的添加。字典中没有排序的概念。
update是利用字典或映射关系去更新另一个字典。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!