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

[经验分享] python学习笔记六:字典

[复制链接]

尚未签到

发表于 2018-8-15 06:13:14 | 显示全部楼层 |阅读模式
  字典是python中唯一内建的映射类型。
  特点:
  没有特殊的顺序;
  存储在特定的键(key)下,可以是数字、字符串甚至是元组
  创建和使用字典
phonebook= {'Alice':'2341', 'Beth':'9102','Cecil':'3258'}
  a.由键-值组成,上述例子中,名字是键,电话号码是值
  b.键与值用冒号(:)隔开
  c.每一对键-值使用逗号(,)隔开
  d.整个字典由一对大括号括起来
  e.空字典:{}
  dict函数
  >>>items = [('name','Gumby'),('age',42)]
  >>>d = dict(items)
  >>>d
  {'age':42, 'name': 'Gumby'}
  >>>
  >>>d = dict(name = 'Gumby', age = 42)
  >>>d
  {'age':42, 'name': 'Gumby'}
  基本字典操作
  len(d):返回字典中(键-值对)的元素数量
  d[k] 返回关联到键k上的值
  d[k] = v 将值v关联到键k上
  del d[k] 删除键为k的项
  k in d 检查d中是否含有键为k的项
  键类型:字典的键不一定是整形,可以是任意的不可变类型
  自动添加:当键不存在时,也可以赋值,字典会建立新的项
  成员资格:k in d查找的是键,而不是值
  >>>people = {'Beth':{'phone':9102,'addr':'Bar street 42'}}
  >>>people['Beth']['addr']
  'Barstreet 42'
  字典的格式化字符串
  >>> phonebook = {'Beth':'9102','Alice':'2341','Cecil':3258}
  >>> "Cecil's phone number is %(Cecil)s"% phonebook
  "Cecil'sphone number is 3258"
  字典的方法
  1)clear: 清除字典中的所有项
  >>>d = {}
  >>>d['name'] = 'Gumby'
  >>>d['age'] = 42
  >>>d
  {'age':42, 'name': 'Gumby'}
  >>>returned_value = d.clear()
  >>>d
  {}
  适用于下面的情况:y和x对应同一个字典,想要清空原始字典中所有元素,必须使用clear方法
  2)copy:返回一个具有相同键-值对的新字典(浅复制,非复制)
  >>>x = {'username':'admin', 'machines':['foo', 'bar', 'baz']}
  >>>y = x.copy()
  >>>y['username'] = 'mlh'
  >>>y['machines'].remove('bar')
  >>>y
  {'username':'mlh', 'machines': ['foo', 'baz']}
  >>>x
  {'username':'admin', 'machines': ['foo', 'baz']}
  注:修改值,原字典不受影响;若原地修改值,原字典受影响。
  使用深复制,可以避免上述问题。使用copy模块的deepcopy函数
  >>>from copy import deepcopy
  >>>d = {}
  >>>d['names'] = ['Alfred', 'Bertrand']
  >>>c = d.copy()
  >>>dc = deepcopy(d)
  >>>d['names'].append('clive')
  >>>c
  {'names':['Alfred', 'Bertrand', 'clive']}
  >>>dc
  {'names':['Alfred', 'Bertrand']}
  3)fromkeys:使用给定的键建立新的字典,每个键都对应一个默认的值None
  >>>{}.fromkeys(['None', 'age'])
  {'None':None, 'age': None}
  4)get:访问字典项,一般来说,如果试图访问字典中不存在的项时会报错,但是get不会
  >>>d = {}
  >>>print d.get('name')
  None
  >>>d.get('name', 'N/A')
  'N/A'
  5)has_key(python 3.0中不存在此函数):检查字典中是否含有特定的键
  >>>d = {}
  >>>d.has_key('name')
  False
  6)items/iteritems
  items:将字典中的项以列表形式返回,列表中的每一项都表示为键-值对的形式
  >>>d = {'title':'Python Web Site', 'url':'http://www.python.org', 'spam':0}
  >>>d.items()
  [('url','http://www.python.org'), ('spam', 0),('title', 'Python Web Site')]
  7)key/iterkays
  key方法将字典中的键以列表形式返回,iterkeys则返回针对键的迭代器
  8)pop:获得对应于给定键的值,然后将这个键-值对从字典中删除
  >>>d = {'x':1, 'y':2}
  >>>d.pop('x')
  1
  >>>d
  {'y':2}
  9)popitem:弹出随机项
  >>>d = {'title':'Python Web Site', 'url':'http://www.python.org', 'spam':0}
  >>>d.popitem()
  ('url','http://www.python.org')
  >>>d
  {'spam':0, 'title': 'Python Web Site'}
  10)setdefault:当键不存在的时候,setdefault返回默认值并且相应的更新字典
  >>>d = {}
  >>>d.setdefault('name', 'N/A')
  'N/A'
  >>>d['name'] = 'Gumby'
  >>>d.setdefault('name', 'N/A')
  'Gumby'
  >>>d
  {'name':'Gumby'}
  11)update:利用一个字典更新另一个字典
  >>>d = {'title':'Python Web Site', 'url':'http://www.python.org', 'changed':'Apr19 17:15:20 2017'}
  >>>x = {'title':'Python Language Websites'}
  >>>d.update(x)
  >>>d
  {'url':'http://www.python.org', 'changed': 'Apr 1917:15:20 2017', 'title': 'Python Language Websites'}
  12)values/itervalues
  values方法以列表的形式返回字典中的值
  >>>d = {}
  >>>d[1] = 1
  >>>d[2] = 2
  >>>d[3] = 3
  >>>d[4] = 1
  >>>d.values()
  [1,2, 3, 1]

运维网声明 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-551849-1-1.html 上篇帖子: python时间函数的常用 下篇帖子: python学习--day1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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