欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

4.字典

程序员文章站 2022-03-04 18:34:10
4.1字典的简介 字典类似于java中hashmap,它的数据都是以key(键)-value(值)配对的形式储存的。这种key-value的结构也被称为映射。只用输入特定的key,就能获得对应的value。例如一个电话本的字典,以名字为key,电话号码为value。当输入名字时,就能直接获得用户的电 ......

4.1字典的简介

字典类似于java中hashmap,它的数据都是以key(键)-value(值)配对的形式储存的。这种key-value的结构也被称为映射。只用输入特定的key,就能获得对应的value。例如一个电话本的字典,以名字为key,电话号码为value。当输入名字时,就能直接获得用户的电话号码。

 

4.2创建和使用字典

以:分隔key和value,以逗号分隔key-value pair。以大括号括起来。字典的key是唯一的,换句话说,不能有相等的key,但是value的值可以一样。要用key来获得value,不要像前面几章提到的列表或者元组用index。

4.字典

 

4.2.1dict函数

可以通过dict函数用其他映射(比如字典)或者(键,值)的序列建立字典。

4.字典

 

4.2.2基本字典操作

很多操作与序列类似(下面的d代表字典):

1.len(d):返回d中的key-value pair

2.d[k]:返回key为k的value。如果k不存在则报错。

3.d[k]=v:将value v关联到key k上。假如k不存在,将添加,假如已经有值关联到k上,旧值会被v重写。

4.del d[k]:删除key为k的key-value pair。

5.k in d:检查k是否在d的key里,返回true/false。

 

key可以为任何不可变类型,也必须为不可变类型。

 

4.2.3字典的格式化字符串

 用法如下:

4.字典

转换说明符(%)后面直接加上键,即使键是string,也不用再两旁加引号‘’。后面再跟上%和字典。

只要给出的键能在字典中找到,就可以获得任意数量的转换说明符。

 

4.2.4字典的方法

1.clear():简单来说,clear就是将字典清空。它和赋值字典变量为空字典有很大不同。

4.字典

在这个例子中,x很明显是一个字典,y=x,并不是创建另一个与x一模一样的字典并赋值给y,而是将x本身关联的字典同时关联到y,仍然只有一个字典。

4.字典

无论我是从x还是y这边改变字典,都将影响到其他关联到这个字典的变量。所以当我从y这边del字典中的一个‘a’:1,从x这边读取字典,‘a’:1也消失了。

4.字典

但是如果我运行x={}的话,是创建了一个新的空字典,并将它关联到x,而y仍然与原字典关联,所以原字典并没受到影响。

如果要清空原字典的话,就应该用clear。

4.字典

2.=,copy()和deppcopy(需要import copy模块):

=:有a,b两个字典,b=a是将a字典的地址直接关联到b,实质上只有一个字典,a,b的任何操作都是在同一个字典上执行。(下面的id(a)和id(b)相当于变量指向的地址,地址相同说明他们代表同一样东西)

4.字典

copy():浅复制。当运行b=a.copy()时,将创建一个新的字典,但是新字典里的key-value pair里的值并非是创建一模一样的值,而是指向原字典的值。当字典中的值改变时,如果地址不变(如append),则两个字典都能观察到改变,如果地址变了(如赋值),由于在原地址的值仍然是与保持原样的字典关联,所以保持原样的字典是不会受到影响的。

deepcopy:深复制。很容易理解,相当于创建并复制一个一模一样的字典,除了内容相同之外,两个字典的没有任何关系,任何的改变都不会对另一个字典有任何影响。相对于浅复制,深复制由于需要将所有东西复制,所以消耗的内存会更多。

 

3.fromkeys():使用给定的key建立字典,每个键的默认值为None(可修改)。

4.字典

 

4.get():和dict[key]来access字典中元素功能一样,不过如果不存在的话get()会返回None,而dict[key]会报错(之前提到了)。很多时候,我们并不能确定key是否一定存在字典中,get()可以让程序继续运行下去。

 

5.has_key(key):检查key是否在字典中,python3.x中改成了key in dict。

 

6.items():将字典以列表的形式返回。(无特殊顺序)

 

7.keys():将字典中的键以列表形式返回。

 

8.pop(key):将键为key的key-value pair从字典中移除。若key不存在则报错。

 

9.popitem():移除任意一个key-value pair。

 

10.setdefault(key[, default]):如果key在字典里,就返回key对应的值,和get()类似,这种情况下,default就没有任何用处。如果不在,则添加(key:default)到字典里。

4.字典

 

11.update(dict):如果dict中包含原来dict有的项(key相同),那么会重写,否则直接添加。

 

12.values():返回所有的key-value pair中的value。itervalues已经在python3.x中取消。