其他
字典常用操作小结
本文作者:李钊颖
文字编辑:余术玲
技术总编:张 邯
在之前的推文中我们已经介绍过字典的定义和特点(《数据类型——Dict、Set与Frozenset简析》)。字典是一系列键值对的可修改的无序组合,通过一个大括号来定义,每个键都与一个值相对应,构成Key-Value键值对,可以通过访问键来得到相应的值,其中键是唯一的,值可以不唯一。今天的推文我们介绍下Python中字典的常用操作。
In [1]: dicta={'sam':3,'william':2,'ben':1}
In [2]: dicta['ben']
Out[2]: 1
也可以通过get方法来获取某个键对应的值,这个同dict[key]差不多,只是当查找的键不存在就默认返回None,返回值可以通过加入参数自由定义。
In [3]: print(dicta.get('naen')) #若访问字典中不存在的键,则返回None
None
In [4]: print(dicta.get('naen',-1)) #设置不存在时的返回值为-1
-1
In [5]: dicta['ben']=10
In [6]: dicta
Out[6]: {'sam': 3, 'william': 2, 'ben': 10} #可以看到键' ben '对应的值由1被修改为10
In [7]: dicta['naen']='girl'
In [8]: dicta
Out[8]: {'sam': 3, 'william': 2, 'ben': 10, 'naen': 'girl'} #创建为新的键值对
In [9]: dicta.setdefault("age",3)
Out[9]: 3 #这个键不存在,返回设置的值
In [10]: dicta
Out[10]: {'sam': 3, 'william': 2, 'ben': 10,'naen': 'girl', 'age': 3} #这个键值对并不存在,所以添加上
In[11]: dicta.setdefault("age",4)
Out[11]: 3 #这个键已经存在,所以返回原字典的值
In [12]: dicta
Out[12]: {'sam': 3, 'william': 2, 'ben': 10,'naen': 'girl', 'age': 3} #字典中仍然不变
In [13]: dicta={'sam':3,'william':2,'ben':1}
In [14]: dicta.pop('ben') #这里我们删除键值对“'ben':1”
Out[14]: 1 #返回对应值1。
In [15]: dicta
Out[15]: {'sam': 3, 'william': 2} #键值对“'ben':1”被删除掉了
In [15]: dicta={'sam':3,'william':2,'ben':1}
In [16]: dicta.popitem()
Out[16]: ('ben', 1) #随机删除了最后一项,并以元组的形式返回了该项。
Dict.clear()表示删除Dict的所有项,即将字典清空:
In [17]: dicta.clear()
In [18]: dicta
Out[18]: {} # 返回了一个空字典
In [19]: dicta={'sam':3,'william':2,'ben':1}
In [20]: dictb=dicta.copy() #将字典dicta的内容拷贝给dictb
In [21]: dictb
Out[21]: {'sam': 3, 'william': 2, 'ben': 1} #两个字典内容相同
In [22]: id(dicta)
Out[22]: 1630299596120
In [23]: id(dictb)
Out[23]: 1630300339944
In [24]: dic1= {'name':'ben','age':3,'hobby':'eat'}
In [25]: dic2= {'name':'william','age':5,'sex':'boy'}
In [26]: dic2.update(dic1) #将字典dic1中的键值对更新到字典dic2中
In [27]: dic1
Out[27]: {'name': 'ben', 'age': 3, 'hobby':'eat'} #字典dic1元素没有变化
In [28]: dic2
Out[28]: {'name': 'ben', 'age': 3, 'sex': 'boy','hobby': 'eat'} #字典dic2中多了“'hobby': 'eat'”键值对
In [29]: str1="lzy" #定义str1作为字典的键
In [30]: dict3={} #定义一个空字典
In [31]: dict3=dict3.fromkeys(str1,7) #以str1元素作为键,对应值都为7
In [32]: dict3
Out[32]: {'l': 7, 'y': 7, 'z': 7}
In [33]: dic1.keys()
Out[33]: dict_keys(['name', 'age', 'hobby']) #返回的是列表,其元素是所有的键
In [34]: dic1.values()
Out[34]: dict_values(['ben', 3, 'eat']) #返回的是列表,其元素是所有的值
In [35]: dic1.items()
Out[35]: dict_items([('name', 'ben'), ('age', 3),('hobby', 'eat')]) #返回值是由键值对构成的元组的列表
In [36]: for i in dic1: #默认情况下遍历的是键
: print(i)
name
age
hobby
In [37]: for i in dic1.values():
: print(i) # 遍历结果是字典的值
ben
3
eat
In [38]: for k,v in dic1.items():
: print(k,v) # 遍历的是字典的键值对
name ben
age 3
hobby eat
至此,字典的定义、特点以及常用方法就介绍完了,相信大家对字典也有了更深的理解。接下来我们会继续介绍其他数据类型的常用方法,想要获得第一手Stata和Python的学习资讯,请持续关注爬虫俱乐部的微信公众号!
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。