Python基础——字典

Posted 薛定谔的猫ovo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础——字典相关的知识,希望对你有一定的参考价值。

文章目录


前言

字典是Python中唯一的映射类型,映射是指两个元素之间元素相互对应的关系。
映射类型区别于序列类型,序列类型以数组的形式存储,通过索引的方式来获取相应位置的值,一般索引值与对应位置存储的数据是毫无关系的:

列表brand、slogan的索引和相对的值是没有任何关系的,唯一有联系的就是两个列表间,索引号相同的元素是有关系,所以这里通过brand.index(“耐克”)这样的语句,间接实现通过品牌查找对应的口号的功能。这样实现比较麻烦而且效率不高,所以需要有字典这种映射类型的出现。



创建和访问字典

先简单演示一下用法:

字典的使用非常简单,它有自己的标志性符号,就是用大括号()定义。
字典由多个键(Key)及其对应的值(Value) 共同构成,每一对键值组合称为项
在上面的例子中,“李宁”, “耐克”, “阿迪达斯"就是键,而"一切皆有可能”, “Just do it”, "Impossible is nothing"就是对应的值。

需要注意的是:字典的键必须独一无二,而值可以是任何数据类型,但必须是不可变的(如字符串、数或元组)
此外,字典跟序列不同,序列讲究顺序,字典讲究映射,不讲究顺序



声明一个空字典

要声明一个空字典,直接用个大括号即可。


创建字典

1、可以用dict()来创建字典

注意到,上面有好几层括号,因为dict()函数的参数可以是一个序列(但不能是多个),所以要打包成一个元组序列(列表也可以)。

2、此外,还可以通过提供具有映射关系的参数来创建字典:

这里要注意的是:键的位置不能加上字符串的引号,否则会报错

3、还有一种创建方法:直接给字典的键赋值,如果键存在,则改写键对应的值,如果不存在,则创建一个新的键并赋值。



殊途同归,下面列举的几种方法都是创建同样的字典:

这也再一次说明了,字典是讲究映射,不讲究顺序的。



各种内置方法

1、fromkeys()

fromkeys()方法用于创建并返回一个新的字典,它有两个参数:第一个参数是字典的键第二个参数是可选的,是传入键对应的值。如果不提供,那么默认值是None。

可以注意到,最后一个例子并不是像我们想的那样,将值“one”、“two”和“three”分别赋值键1、2和3,因为fromkeys()把(“one”, “two”, “three”)当成一个值了。



2、keys()、values()和items()

访问字典的方法有keys()、values()和items()。

  • keys()用于返回字典中的键
  • values()用于返回字典中所有的值
  • items()用于返回字典中所有的键值对(项)


有时候,我们并不知道提供的项在字典中是否存在,如果不存在,Python就会报错:




3、get()

get()方法提供了更宽松的方式去访问字典项,当键不存在的时候,get()方法并不会报错,只是会返回一个None,表示什么都没找到:

如果找不到数据时返回指定的值,那么可以在第二个参数设置对应的默认返回值:


不知道一个键是否在字典中,那么可以使用成员关系操作符(in或not in)来判断

在字典中检查键的成员资格比序列更高效,当数据规模相当大的时候,两者的差距会很明显:因为字典是采用哈希的方法一对一找到成员,而序列则是采取迭代的方法逐个对比。
最后需要注意的是,这里查找的是键而不是值,但在序列中查找的是元素的值而不是元素的索引。



4、clear()

如果需要清空一个字典,则使用clear()方法

有的读者可能会使用变量名赋值为一个空字典的方法来清空字典,这样做存在一定的弊端。举个例子:

从上面的例子可以看出,a和b指向同一个字典,然后试图通过将a重新指向一个空字典来达到清空的效果时,我们发现原来的字典并没有被真正清空,只是a指向了一个新的空字典而已。所以这种做法在一定条件下会留下安全隐患。故应该使用clear()来清空字典:



5、copy()

copy()方法是复制字典



6、pop()和popitem()

pop()是给定键弹出对应的值,而popitem()是弹出一个项(键值对)



7、setdefault()

setdefault()方法和get()方法有点相似,但是setdefault()在字典中找不到相应的键时会自动添加



8、update()

update()方法用来更新字典

以上是关于Python基础——字典的主要内容,如果未能解决你的问题,请参考以下文章

python基础 filter ,列表,字典,集合 中根据 条件 筛选 数据

python 第3课 python 基础语法

小白学 Python(13):基础数据结构(字典)(下)

python 学习笔记day05-python字典和集合条件和循环文件和输入输出

python 学习笔记day05-python字典和集合条件和循环文件和输入输出

python 学习笔记day05-python字典和集合条件和循环文件和输入输出