python 字典dict 学习总结

1.字典的表示:用大括号扩起来,键值对之间的元素用冒号连接(key:value)

例如:
di = {'a1':'123','b1':'456','c1':'789'}
此处,di中虽然有6个字符串,但是实际上di只有3个值,我们把'a1':'123'这种di里的值叫做 '键值对'(key:value)
 
其中,value部分可以使用任何值,也可以随意嵌套;而在key部分中,列表list,字典dict不能放在key里面,这和字典本身的运作方式有关(因为列表字典不能做哈希运算,所以不能作为key值)
最后要注意的是, 字典是无序的;无序的好处在于, 储存一大堆东西的时候,能快速的进行读取,很省时间

2.字典的增删改查及其它方法

a.增加

.fromkeys()        (可迭代的序列,值) 静态方法;根据一个可迭代的序列,将之作为key创建字典,并赋予一个统一的值values

b.删除

del['a1'] 通过索引(字典的索引是key)的方式删除键值对
.clear() 删除指定字典中的所有元素
.pop() (指定的key,返回值) 删除字典中的指定key;当指定key存在时,删除后返回对应的value;如不存在时,返回指定的返回值,如果不设置返回值且指定key也不存在的话则报错
.popitem() 按python的顺序(随机)给字典删除元素,一次一个,返回的是被删除的键值对
.setdefault() (指定的key,指定的value) 设置指定的键值对,如果指定的key已经存在则返回对应的value,如果不存在则将其添加进dict中并返回其value

c.修改


.update() (任意键值对)        #多个对用逗号隔开 更新dict中的键值对,如果有则更新,如果没有则添加
#此处键值对可以用'a1':'123'这种冒号分隔的形式也可以用等号分隔的形式,就不多做范例

d.查询

字典dict的查询方式和列表list以及元组tuple都不同,列表list以及元组tuple都可以通过简单的数字索引比如lst[0]以及切片来查询;但是字典就不一样,字典的索引是我们定义的key,例如print(di['a1']);而且因为字典dict是无序的,所以根本就不能通过切片的方式来查看字典

对于字典,因为key是创建的时候自定义的,所以while方法对字典来说无效,但是可以通过for循环把字典中的元素给输出出来

.keys() 将指定字典中的key输出,返回值类型为'dict_keys',官方描述为'a set-like object'
.values() 将指定字典中的values输出,返回值类型为'dict_values'
.items() 将指定字典中的键值对输出,返回值类型为'dict_items'
.get()    (指定的key,返回值) 查询字典中有无指定的key,如果有则输出对应的value,如果没有则输出指定的返回值,返回值默认为None
#get()和索引查找的不同之处在于,索引查找当找不到的时候会报错而get()方法则不会报错

e.其它

.copy() 将指定字典复制(浅复制)
浅复制是什么呢?就是,本来有字典 a = {'abc':'123','efg':'456'},在内存中,就是把a这个变量指向 {'abc':'123','efg':'456'}在内存中的地址,当我们做一个浅复制 b = a.copy()   时,并不是说 {'abc':'123','efg':'456'}做了一个新的副本,而是把b这个变量也指向了 {'abc':'123','efg':'456'}, 也就是说a和b指向的是同一个内存地址 ,这种复制叫浅复制

猜你喜欢

转载自blog.csdn.net/capture2f/article/details/80195165