视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
跟老齐学Python之dict()的操作方法
2020-11-27 14:38:04 责编:小采
文档


dict的很多方法跟list有类似的地方,下面一一道来,并且会跟list做一个对比

嵌套

嵌套在list中也存在,就是元素是list,在dict中,也有类似的样式:

>>> a_list = [[1,2,3],[4,5],[6,7]]
>>> a_list[1][1]
5
>>> a_dict = {1:{"name":"qiwsir"},2:"python","email":"qiwsir@gmail.com"}
>>> a_dict
{1: {'name': 'qiwsir'}, 2: 'python', 'email': 'qiwsir@gmail.com'}
>>> a_dict[1]['name'] #一个嵌套的dict访问其值的方法:一层一层地写出键
'qiwsir'

获取键、值

在上一讲中,已经知道可以通过dict的键得到其值。例上面的例子。

还有别的方法得到键值吗?有!python一般不是只有一个方法实现某个操作的。

>>> website = {1:"google","second":"baidu",3:"","":4}

>>>#用d.keys()的方法得到dict的所有键,结果是list
>>> website.keys()
[1, 'second', 3, '']

>>>#用d.values()的方法得到dict的所有值,如果里面没有嵌套别的dict,结果是list
>>> website.values()
['google', 'baidu', '', 4]

>>>#用items()的方法得到了一组一组的键值对,
>>>#结果是list,只不过list里面的元素是元组
>>> website.items()
[(1, 'google'), ('second', 'baidu'), (3, ''), ('', 4)]

从上面的结果中,我们就可以看出,还可以用for语句循环得到相应内容。例如:

>>> for key in website.keys():
... print key,type(key)
... 
1 
second 
3 
 

>>>#下面的方法和上面的方法是一样的
>>> for key in website:
... print key,type(key)
... 
1 
second 
3 
 

以下两种方法等效:

>>> for value in website.values():
... print value
... 
google
baidu

4

>>> for key in website:
... print website[key]
... 
google
baidu

4

下面的方法又是等效的:

>>> for k,v in website.items():
... print str(k)+":"+str(v)
... 
1:google
second:baidu
3:
:4

>>> for k in website:
... print str(k)+":"+str(website[k])
... 
1:google
second:baidu
3:
:4

下面的方法也能得到键值,不过似乎要多敲键盘

>>> website
{1: 'google', 'second': 'baidu', 3: '', '': 4}
>>> website.get(1) 
'google'
>>> website.get("second")
'baidu'

其它几种常用方法

dict中的方法在这里不做过多的介绍,因为前面一节中已经列出来类,看官如果有兴趣可以一一尝试。下面列出几种常用的

>>> len(website)
4
>>> website
{1: 'google', 'second': 'baidu', 3: '', '': 4}

>>> new_web = website.copy() #拷贝一份,这个拷贝也叫做浅拷贝,对应着还有深拷贝。
>>> new_web  #两者区别,可以google一下。
{1: 'google', 'second': 'baidu', 3: '', '': 4}

删除键值对的方法有两个,但是两者有一点区别

>>>#d.pop(key),根据key删除相应的键值对,并返回该值
>>> new_web.pop('second')
'baidu'

>>> del new_web[3]  #没有返回值,如果删除键不存在,返回错误
>>> new_web
{1: 'google', '': 4}
>>> del new_web[9]
Traceback (most recent call last):
File "", line 1, in 
KeyError: 9

用d.update(d2)可以把d2合并到d中。

>>> cnweb
{'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business'}
>>> website
{1: 'google', 'second': 'baidu', 3: '', '': 4}

>>> website.update(cnweb) #把cnweb合并到website内
>>> website  #变化了
{'qq': 'first in cn', 1: 'google', 'second': 'baidu', 3: '', 'python': 'qiwsir.github.io', '': 4, 'alibaba': 'Business'}
>>> cnweb  #not changed
{'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business'}

在本讲最后,要提醒看官,在python3中,dict有不少变化,比如能够进行字典解析,就类似列表解析那样,这可是非常有意思的东西哦。

下载本文
显示全文
专题