python-dict

dict是比list更强大的数据结构。主要体现在:

第一点:key可以是任何值。

例:

x=[]

x[43]=’hello’,#不行,因为index=43不存在,越界

而dict可以,因为任何值都可以为键

x={}

x[43]=’hello’

x={‘43:hello’}

其实这里的字典和json数据格式一致,比如一个电话本:

tel={‘liming’:

{'number’:'123’

}

}

dict方法:

1.copy(),把b字典copy给a,这里有注意点。当a=b.copy()时候,对a,b任何一个进行修改都会影响另一个,因为指向同一个字典,意思和a=b一样,因此,如果要对a进行修改,而不影响b,则需要进行深拷贝,把b整个复制给a,相同于a是b的一个副本.

需要导入模块 copy

例:

from copy import deepcopy

a=deepcopy(b)#联系list的复制

2.fromkeys()

用给定的键值对一个新字典进行初始化,并且约束好键,如果对原来的字典进行这个函数操作,则无效

例:

dict_a={}.fromkeys([‘tom’,'jerry’],’hello’)

则{'tom’:'hello’,'jerry‘:'hello’}

3.get()

get()用来通过键访问,它和一般的dict[key]有什么区别呢?

主要是当key不存在的时候,不会报错,默认会返回一个None,另外也可以自定义,当key不存在,怎么表示.

b.get(key,’sorry,不存在’)

4.pop(key).根据键来删除某个对象,并返回这个对象

5.popitem().一个个来删除字典,因为字典是无序的,所以不能参数里无index

6.setdefault(),和前面一个keyforms一样,可以设置键的默认值,当key值不存在,可以设定默认值,如果有,就返回value

7.update(x),用一个x字典去更新另外一个字典,如果有相同项,则覆盖,没有就后面加上

8.除了列表外其他数据类型序列都是不可变的

因此如果在循环迭代里对字典进行删除操作是不允

许的。而使用字典的keys()可以,因为他是返回

一个独立于字典的列表。