python元组和字典的内建函数实例详解


Posted in Python onOctober 22, 2019

本文实例讲述了python元祖和字典的内建函数。分享给大家供大家参考,具体如下:

元组Tuple

元组是序列类型一种,也是不可变类型数据结构,对元组修改后会生成一个新的元组。所以Tuple对象并没有太多的内置方法。

count() 查询一个元素在Tuple中的数量

count(…)

T.count(value) -> integer ? return number of occurrences of value
返回一个value在Tuple出现的次数,即个数。

In [5]: tup = ('My','name','is','Jmilk')
In [6]: tup.count('My')
Out[6]: 1
In [7]: tup.count('my')
Out[7]: 0

index() 查询元素在Tuple中的索引号

index(…)

T.index(value, [start, [stop]]) -> integer ? return first index of value.
Raises ValueError if the value is not present.
返回在指定范围中[start,[stop]],第一次出现的value的索引。

In [15]: tup.index('Jmilk',2,4)
Out[15]: 3

元组的遍历

In [16]: tup
Out[16]: ('My', 'name', 'is', 'Jmilk')
In [17]: for i in tup:
  ....:   print i
  ....:
My
name
is
Jmilk

字典Dictionary

字典数据类型使用键值对的映射关系来关联数据。

创建一个字典对象

简单的创建

In [18]: dic = {'name':'Jmilk','age':23,'city':'BJ'}

fromkey()使用keys来创建字典

fromkeys(…)

dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
v defaults to None.

通过一个keys的序列来创建字典,可以指定keys映射的value,默认为None。

In [125]: newDic = {}.fromkeys(['name','age','city'],'not found')
In [126]: newDic
Out[126]: {'age': 'not found', 'city': 'not found', 'name': 'not found'}

查询

查询字典中key映射的value

In [44]: dic['age']
Out[44]: 23

get()查询Key映射的value,当key不存在时,返回默认值

get(…)

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

自动添加(字典的默认值):自动添加是字典数据类型的特性,即使一个Key起初不存在于字典中,也可为Key分配一个值,以此来建立新的项。

In [6]: dic
Out[6]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [7]: dic.get('age',24)
Out[7]: 23
In [8]: dic.get('a',24)
Out[8]: 24

若不使用get()函数去获取一个不存在的key对应的value时,会报错。

len(dictName)获取字典长度

len(…)

len(object) -> integer

Return the number of items of a sequence or mapping.

len()是Python的内建函数,可以获取序列或字典的长度,即元素的个数。

In [34]: len(dic)
Out[34]: 3

keys()列出dict的Keys列表

keys(…)

D.keys() -> list of D's keys

In [22]: dic.keys()
Out[22]: ['city', 'age', 'name']

values()列出dict的values列表

values(…)

D.values() -> list of D's values

In [23]: dic.values()
Out[23]: ['BJ', 23, 'Jmilk']

添加字典项

通过赋值为字典添加一个项

格式:dictName[keyN] = valueN

In [25]: dic
Out[25]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [27]: dic['sex'] = 'man'
In [28]: dic
Out[28]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk', 'sex': 'man'}

通过setdefault()增加

setdefault(…)

D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

当key存在时,call D.get(k,d)方法,即获取key映射的value。当key不存在时,执行D[k]=d,即为dict增加一个新的元素。

In [25]: dic
Out[25]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [26]: dic.setdefault('age',24)
Out[26]: 23
In [27]: dic.setdefault('sex','man')
Out[27]: 'man'
In [28]: dic
Out[28]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk', 'sex': 'man'}

删除字典项

del语句,删除字典中key对应的一个项

del语句可以操作所有的迭代器对象。

In [40]: dic
Out[40]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [41]: del dic['age']
In [42]: dic
Out[42]: {'city': 'BJ', 'name': 'Jmilk'}

popitem() 将随机一个字典键值对弹出(删除并返回)

popitem(…)

D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
以tuple(k,v)的形式删除字典的一个元素,并返回。需要一个接受返回的对象。若字典为空,则报错。

In [32]: dic
Out[32]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk', 'sex': 'man'}
In [34]: dic.popitem()
Out[34]: ('city', 'BJ')
In [35]: dic.popitem()
Out[35]: ('age', 23)

pop()弹出key映射的value

pop(…)

D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised

In [39]: dic
Out[39]: {'name': 'Jmilk', 'sex': 'man'}
In [40]: dic.pop('name')
Out[40]: 'Jmilk'

一般情况下,当字典为空时调用了D.pop()方法的化会触发一个KeyError。但是也可以通过下面的调用方式来添加key不存在时的返回默认值。

当Key不存在时,返回默认值,避免报错:

In [20]: dic
Out[20]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [21]: dic.pop('sex','man')
Out[21]: 'man'

clear()清空字典中的所有项

clear(…)

D.clear() -> None. Remove all items from D.

清空所有项目,返回None。

In [58]: dic
Out[58]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [59]: dic.clear()
In [60]: dic
Out[60]: {}

修改

简单的修改dict中key映射的value值

格式:“`dictName[key] = newValue

In [50]: dic['city'] = 'GZ'
In [51]: dic
Out[51]: {'age': 23, 'city': 'GZ', 'name': 'Jmilk'}

update()更新字典

update(…)

D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] = E[k]
If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]

使用另一个字典来更新一个字典,通过匹配的key来更新value。

In [137]: dic
Out[137]: {'age': 23, 'city': 'BJ', 'name': ['jmilk']}
In [138]: newInfo = {'name':'chocolate','age':22,'city':'ZH'}
In [139]: dic.update(newInfo)
In [140]: dic
Out[140]: {'age': 22, 'city': 'ZH', 'name': 'chocolate'}

当然,也可以只更新其中若干个value。

字典的复制

copy()浅复制

字典的浅复制与List的浅复制类似,都只是对引用对象的copy。

In [107]: dic1 = dic.copy()
In [108]: dic,dic1
Out[108]:
({'age': 23, 'city': 'BJ', 'name': ['jmilk', 'chocolate']},
 {'age': 23, 'city': 'BJ', 'name': ['jmilk', 'chocolate']})
In [109]: dic1['age'] = 24
In [110]: dic,dic1
Out[110]:
({'age': 23, 'city': 'BJ', 'name': ['jmilk', 'chocolate']},
 {'age': 24, 'city': 'BJ', 'name': ['jmilk', 'chocolate']})

注意:对浅copy得到的新字典中的value做替换操作(替换整个value),是不会影响到元字典的。但是如果对新字典中的value做了修改操作(修改其中一部分),就会影响到原字典。如下:

In [111]: dic1['name'].remove('chocolate')
In [112]: dic,dic1
Out[112]:
({'age': 23, 'city': 'BJ', 'name': ['jmilk']},
 {'age': 24, 'city': 'BJ', 'name': ['jmilk']})

因为两个key的id指向同一个数据对象,对数据对象做了修改(改变数据对象)后就会都受到影响。但替换(改变引用对象)整个value,即将新字典中key的id指向另一个数据对象,不会改变原数据对象。

深copy和浅copy的详细介绍,请参考:https://3water.com/article/172490.htm

类型转换

item() 将每个字典项,转化为Tuple和List的混合数据类型
items(…)
D.items() -> list of D's (key, value) pairs, as 2-tuples

In [42]: dic
Out[42]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [43]: dic.items()
Out[43]: [('city', 'BJ'), ('age', 23), ('name', 'Jmilk')]
In [44]: [x for param in dic for x in dic]  #嵌套列表降维
Out[44]: ['city', 'age', 'name', 'city', 'age', 'name', 'city', 'age', 'name']

因为返回的是List类型对象,所以可以使用索引操作符。

In [46]: dic.items()[0]
Out[46]: ('city', 'BJ')
In [48]: dic.items()[0][0]
Out[48]: 'city'

由此可以看出,可以对一个对象做 操作,主要由对象的类型来决定。

成员关系

判断一个kay是否存在dict中

In [56]: dic
Out[56]: {'age': 23, 'city': 'GZ', 'name': 'Jmilk'}
In [57]: dic.has_key('age')
Out[57]: True

True ⇒ key存在dict中
False ⇒ key不存在dict中

使用成员关系运算符判断

成员资格:'age' in dic只能通过key的成员关系来判断。

In [45]: dic
Out[45]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [46]: 'age' in dic
Out[46]: True
In [47]: 'age' not in dic
Out[47]: False

字典的遍历

In [62]: dic
Out[62]: {'age': 23, 'city': 'GZ', 'name': 'Jmilk'}
In [63]: for key_num,val_num in dic.items():
  ....:   print key_num,val_num
  ....:
city GZ
age 23
name Jmilk

格式化输出value

通过格式化%(key)format来输出映射的value

In [53]: dic
Out[53]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [54]: print 'ple call me %(name)s,Thx!' % dic
ple call me Jmilk,Thx!
In [55]: print 'I m %(age)d years old.' % dic
I m 23 years old.

只要key in dict,就能使用任意的转换说明符。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
简单实现python聊天程序
Apr 01 Python
python 反向输出字符串的方法
Jul 16 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
python机器学习之KNN分类算法
Aug 29 Python
python selenium firefox使用详解
Feb 26 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
Python爬虫学习之翻译小程序
Jul 30 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
Django多数据库联用实现方法解析
Nov 12 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 Python
Python List列表对象内置方法实例详解
Oct 22 #Python
Python序列对象与String类型内置方法详解
Oct 22 #Python
Python基本语法之运算符功能与用法详解
Oct 22 #Python
基于Python实现拆分和合并GIF动态图
Oct 22 #Python
python  logging日志打印过程解析
Oct 22 #Python
安装2019Pycharm最新版本的教程详解
Oct 22 #Python
Python列表list常用内建函数实例小结
Oct 22 #Python
You might like
php的header和asp中的redirect比较
2006/10/09 PHP
php实现求相对时间函数
2015/06/15 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
Python实现多属性排序的方法
2018/12/05 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python