设为首页 收藏本站
查看: 1505|回复: 0

[经验分享] Python学习笔记4—Python字典元组

[复制链接]

尚未签到

发表于 2018-8-11 08:33:48 | 显示全部楼层 |阅读模式
  一、字典定义
  用大括号{}包裹,以逗号分割每个键值对,键与值之间使用冒号连接,构成(key{values)结构。
  键和值可以是任意的数据对象,大多数情况还是以数字和字符串的方式构成
  字典是无序的,键在字典中必须是唯一,在字典中取值的方式是以键寻找相对应的值
  字典是python中的映射数据类型
  字典不支持拼接(concatenation)和重复(repetirion)
a={}    #定义空字典,没有任何的键和值  
print a
  
a={'a':1,'b':2,'c':3,'d':4}     #创建字典,键与值对应,以逗号分割,键与值以冒号连接
  
print a
  
a={}.fromkeys(list('abcdef'))     #创建字典,使用字典方法,值创建键,值为None,键来自列表的元素
  
print a
  
a=dict((['x', 1], ['y', 2]))    #使用字典函数创建字典
  
print a
  
a=dict(zip(["key1",'key2'],(1,2)))  #使用zip方法和dict函数创建字典
  
print a
  执行结果为
{}  
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
  
{'a': None, 'c': None, 'b': None, 'e': None, 'd': None, 'f': None}
  
{'y': 2, 'x': 1}
  
{'key2': 2, 'key1': 1}
  zip([iterable, ...])
  zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。
>>> a=zip(list('abcdefg'),list('1234567'))  
>>> print a
  
[('a', '1'), ('b', '2'), ('c', '3'), ('d', '4'), ('e', '5'), ('f', '6'), ('g', '7')]
  
>>> zip(*a)
  
[('a', 'b', 'c', 'd', 'e', 'f', 'g'), ('1', '2', '3', '4', '5', '6', '7')]
  二、字典访问
  字典无序的,定义字典的顺序与生成字典的顺序是不一至的
  通过字典的键,取得字典键所对应的值
>>> a={'a':1,'b':2,'c':{'d':3}}    #字典中包含字典  
>>> print a
  
{'a': 1, 'c': {'d': 3}, 'b': 2}
  
>>> a['a']
  
1
  
>>> a['c']
  
{'d': 3}
  
>>> a['c']['d']
  
3
  
>>> a['a']=67    #字典更新
  
>>> a
  
{'a': 67, 'c': {'d': 3}, 'b': 2}
  
>>> del a['a']    #字典删除
  
>>> a
  
{'c': {'d': 3}, 'b': 2}
  三、字典方法
  1.dict.keys()    获取字典内所有键,以列表返回
  dict.values()    获取字典内所有值,以列表返回
>>> a=dict(zip(list('abcdef'),list('1234567')))  
>>> a
  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'f': '6'}
  
>>> a.keys()
  
['a', 'c', 'b', 'e', 'd', 'f']
  
>>> a.keys()[3]
  
'e'
  
>>> a.values()
  
['1', '3', '2', '5', '4', '6']
  
>>> a.values()[3]
  
'5'
  2.dict.pop(k,[d])
  弹出指定键k所对应的值,并且将该键及其所对应的值删除,如果键没有找到,将返回指定d
>>> a  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'f': '6'}
  
>>> a.pop('c')
  
'3'
  
>>> a
  
{'a': '1', 'b': '2', 'e': '5', 'd': '4', 'f': '6'}
  
>>> a.pop('c','not found')
  
'not found'
  
>>> a.pop('d','not found')
  
'4'
  3.dict.update()
  更新字典内键与值,键名即使是字符串,在更新时不需要加引号,更新是以赋值的方式进行。等价于dict['key']='new-value'
>>> a  
{'a': '1', 'b': '2', 'e': '5', 'f': '6'}
  
>>> a.update(a=55)
  
>>> a
  
{'a': 55, 'b': '2', 'e': '5', 'f': '6'}
  
>>> a['a']=66
  
>>> a
  
{'a': 66, 'b': '2', 'e': '5', 'f': '6'}
  4.dict.get()    获取字典内所有键对应的值,与d['keyname']相同
>>> a  
{'a': 66, 'b': '2', 'e': '5', 'f': '6'}
  
>>> a.get('a')
  
66
  
>>> a['a']
  
66
  5.dict.items()
  将字典的键和值放在一个元组中,每一个键和值作为一个元组,放在列表中存储返回
>>> a  
{'a': 66, 'b': '2', 'e': '5', 'f': '6'}
  
>>> a.items()
  
[('a', 66), ('b', '2'), ('e', '5'), ('f', '6')]
  6.dict.popitem()    随机的删除字典中的一个键值对,并且以元组的方式返回
>>> a  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  
>>> a.popitem()
  
('a', '1')
  
>>> a.popitem()
  
('c', '3')
  
>>> a.popitem()
  
('b', '2')
  
>>> a.popitem()
  
('e', '5')
  7.dict.viewitems()    返回字典dict的元素视图
  dict.viewkeys()     返回字典dict的键视图
  dict.viewvalues()   返回字典dict的值视图
>>> a  
{'d': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  
>>> a.viewitems()
  
dict_items([('d', '4'), ('g', '7'), ('f', '6'), ('i', '9'), ('h', '8'), ('j', '0')])
  
>>> a.viewkeys()
  
dict_keys(['d', 'g', 'f', 'i', 'h', 'j'])
  
>>> a.viewvalues()
  
dict_values(['4', '7', '6', '9', '8', '0'])
  8.dict.iteritems()    返回字典dict的迭代对象
  dict.iterkeys()     返回字典dict的键的迭代对象
  dict.itervalues()   返回字典dict的值迭代对象
>>> a  
{'d': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  
>>> a.iteritems()
  
<dictionary-itemiterator object at 0x0000000002E2FA98>
  
>>> a.iterkeys()
  
<dictionary-keyiterator object at 0x0000000002E41548>
  
>>> a.itervalues()
  
<dictionary-valueiterator object at 0x0000000002E2FA98>
  
>>> a.iteritems().next()
  
('d', '4')
  
>>> a.iterkeys().next()
  
'd'
  
>>> a.itervalues().next()
  
'4'
  9.dict.setdefault(k,[d])
  如果键在字典中,返回字典键所对应的值,如果不在创建该键,值默认为None,如果d给定值,值为d
>>> a  
{'d': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  
>>> a.setdefault('d',99)
  
'4'
  
>>> a.setdefault('a')    #创建键a
  
>>> a
  
{'a': None, 'd': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  
>>> a.setdefault('a',99)    #存在键a,不再创建,a的值为None,没有显示
  
>>> a
  
{'a': None, 'd': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  
>>> a.setdefault('b',88)    #创建键b,并赋值为88,将88弹出
  
88
  
>>> a
  
{'a': None, 'b': 88, 'd': '4', 'g': '7', 'f': '6', 'i': '9', 'h': '8', 'j': '0'}
  10.dict.copy()    产生字典副本,或者说是替身
a=dict(zip(list('abcdefg'),list('123456789')))  
b=a.copy()
  
print a
  
print b
  
print b is a
  
b['a']=99
  
print b
  
print a
  执行结果为
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'}  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'}
  
False
  
{'a': 99, 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'}
  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'}
import copy  
a=list('abcdefg')
  
b=copy.copy(a)
  
print a
  
print b
  可以使用这种方法,复制列表等其他对象,执行结果为
['a', 'b', 'c', 'd', 'e', 'f', 'g']  
['a', 'b', 'c', 'd', 'e', 'f', 'g']
  11.dict.clear()    清除字典内的所有键、值
>>> a  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'}
  
>>> a.clear()
  
>>> a
  
{}
  12.dict.has key()
  成员关系检查,判断字典中是否存在指定的键
  python3.0 has key将不在支持,被in替代
>>> a  
{'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4', 'g': '7', 'f': '6'}
  
>>> a.has_key('a')
  
True
  
>>> a.has_key('h')
  
False
  
>>> 'a' in a
  
True
  
>>> 'a' not in a
  
False
  
>>> 'h' in a
  
False
  
>>> 'h' not in a
  
True
  四、Python元组
  Python元组是python重要的数据对象
  元组大多数情况下,用于系统的输入或者系统的返回,元组的特性是不可以修改,但是支持迭代
  元组的方法相对来说,比较少,只有count 和 index
  元组的定义是以"()"包含以","作为分割元素的对象,元素也可以是任何的数据对象
  五、Python数据类型比较
  python 数据类型十分灵活,分别有列表,字典,元组
比较点列表字典元组表示方法[],[1,2]{},{'a':1,'b':2}(),(1,2)访问元素的方式索引键索引有序性有序无序有序可变性可变可变不可变可操作性操作丰富操作丰富操作单调

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-549905-1-1.html 上篇帖子: Python学习日志之Python数据结构初识 下篇帖子: Python学习笔记5—Python模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表