资讯专栏INFORMATION COLUMN

[零基础学Python]dict()的操作方法

vpants / 548人阅读

摘要:还有别的方法得到键值吗有一般不是只有一个方法实现某个操作的。删除键值对的方法有两个,但是两者有一点区别,根据删除相应的键值对,并返回该值没有返回值,如果删除键不存在,返回错误用可以把合并到中。

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:"facebook","twitter":4}

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

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

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

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

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

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

以下两种方法等效:

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

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

下面的方法又是等效的:

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

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

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

>>> website
{1: "google", "second": "baidu", 3: "facebook", "twitter": 4}
>>> website.get(1)     
"google"
>>> website.get("second")
"baidu"
其它几种常用方法

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

>>> len(website)
4
>>> website
{1: "google", "second": "baidu", 3: "facebook", "twitter": 4}

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

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

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

>>> del new_web[3]     #没有返回值,如果删除键不存在,返回错误
>>> new_web
{1: "google", "twitter": 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: "facebook", "twitter": 4}

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45286.html

相关文章

  • [基础Python]字典,你还记得吗?

    摘要:字典,这个东西你现在还用吗随着网络的发展,用的人越来越少了。最早的名字叫伍记小字典,但未能编纂完成。新华字典由商务印书馆出版。成为迄今为止世界出版史上最高发行量的字典。也被称为关联数组或哈希表。 字典,这个东西你现在还用吗?随着网络的发展,用的人越来越少了。不少人习惯于在网上搜索,不仅有web版,乃至于已经有手机版的各种字典了。我曾经用过一本小小的《新华字典》。 《新华字典》是...

    galaxy_robot 评论0 收藏0
  • [基础Python]已经过去数据类型总结

    摘要:前面已经洋洋洒洒地介绍了不少数据类型。所有的数据类型,就是一种对象。可以在交互模式下这样查看显示应该是这样的注意看上面乱七八糟的英文中,是不是有符号,这是什么前面在讲述字符串的时候提到了转义符号,这是换一行。 前面已经洋洋洒洒地介绍了不少数据类型。不能再不顾一切地向前冲了,应当总结一下。这样让看官能够从总体上对这些数据类型有所了解,如果能够有一览众山小的感觉,就太好了。 下面的表格中...

    voidking 评论0 收藏0
  • [基础python]总结参数传递

    摘要:下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。而且,必须数量一致,一一对应。 就前面所讲,函数的基本内容已经完毕。但是,函数还有很多值得不断玩味的细节。这里进行阐述。 参数的传递 python中函数的参数通过赋值的方式来传递引用对象。下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。 def...

    vibiu 评论0 收藏0
  • [基础Python]一二三,集合了

    摘要:最简单的说法,即是在最原始的集合论朴素集合论中的定义,集合就是一堆东西。若然是集合的元素,记作。这里对被数学家们称为直观的或朴素的集合论进行一个简短而基本的介绍更详细的分析可见朴素集合论。对集合进行严格的公理推导可见公理化集合论。 回顾一下已经了解的数据类型:int/str/bool/list/dict/tuple 还真的不少了. 不过,python是一个发展的语言,没准以后还出别...

    CastlePeaK 评论0 收藏0
  • [基础python]难以想象for

    摘要:看这个标题,有点匪夷所思吗为什么是难以想象的呢因为在中,它的确是很常用而且很强悍,强悍到以至于另外一个被称之为迭代的东西,在中就有点相形见绌了。然后将序列对应的元素依次组成元组,做为一个的元素。 看这个标题,有点匪夷所思吗?为什么for是难以想象的呢?因为在python中,它的确是很常用而且很强悍,强悍到以至于另外一个被称之为迭代的东西,在python中就有点相形见绌了。在别的语言中,...

    lwx12525 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<