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

[经验分享] Python数据结构方法简介四————字典

[复制链接]

尚未签到

发表于 2018-8-14 08:15:45 | 显示全部楼层 |阅读模式
  字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号({})中,键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
  1、创建字典
dict1={"a":1,"b":2,"c":"3","d":4}  
dict2={"a":[1,2,3,4],"b":2,"c":"3","d":4}
  
dict3={"a":[1,2,3,4],"b":2,"(5,6,7,8)":"3","d":4}
  2、访问字典
  字典是无序的,所以它不能依靠索引进行访问,只能通过键访问值。
dict1["a"]  
1
  
dict1["b"]
  
2
  如果键不存在,会报keyError.
dict1['e']  
Traceback (most recent call last):
  
  Python Shell, prompt 71, line 1
  
KeyError: 'e'
  3、修改字典
  由于字典的键是唯一的,字典只能修改键所对应的值。如果键不存在,就会在字典中添加新的键值对。
dict1  
{'a': 1, 'c': '3', 'b': 2, 'd': 4}
  
dict1['a']=10
  
dict1['b']=20
  
dict1['e']=5
  
print dict1
  
{'a': 10, 'c': '3', 'b': 20, 'e': 5, 'd': 4}
  None可以做字典的键或者值
dict1['e']=None  
print dict1
  
{'a': 10, 'c': '3', 'b': 20, 'e': None, 'd': 4}
  
dict1[None]=2
  
print dict1
  
{'a': 10, 'c': '3', 'b': 20, 'e': None, 'd': 4, None: 2}
  四、字典的方法
  1、clear 清空字典
  D.clear() -> None. Remove all items from D
dict1={"a":1,"b":2,"c":3,"d":4}  
dict1.clear()
  
print dict1
  
{}
  2、copy复制字典
  D.copy() -> a shallow copy of D
dict1={"a":1,"b":2,"c":3,"d":4}  
test=dict1.copy()
  
print test
  
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
  
字典的copy方法是浅拷贝
  
test==dict1
  
True
  
test is dict1
  
False
  3、fromkeys  创建一个新字典,以序列S中元素做字典的键,val 为字典所有键对应的初始值
  dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v. v defaults to None.
dict1.fromkeys(['a','b'],10)  
{'a': 10, 'b': 10}
  4、get 获取指定键的值
  D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
  print dict1
  {'a': 1, 'c': 3, 'b': 2, 'd': 4}
  dict1.get('a')
  1
  dict1.get('b')
  2
  get方法与访问字典相似,但是get又成被称为安全取值,就是当键不存在时,不会导致程序崩溃,而是返回None。
dict1.get('a')  
1
  
dict1.get('b')
  
2
  
dict1.get('e')
  5、has_key 判断键是否存在,返回布尔值
  D.has_key(k) -> True if D has a key k, else False
dict1.has_key('a')  
True
  
dict1.has_key('e')
  
False
  6、items 以列表返回可遍历的(键, 值) 元组数组
  D.items() -> list of D's (key, value) pairs, as 2-tuples
dict1.items()  
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
  7、keys 以列表的形式返回字典的键
  D.keys() -> list of D's keys
  values 以列表的形式返回字典的值
  D.values() -> list of D's values
  dict1.keys()
  ['a', 'c', 'b', 'd']
  dict1.values()
  [1, 3, 2, 4]
  8、dict1.update(dict2) 把字典dict2的键/值对更新到dict1里
  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
dict1.update({"v":1})  
print dict1
  
{'a': 1, 'c': 3, 'b': 2, 'd': 4, 'v': 1}
  9、setdefault 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
  D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
dict1.setdefault('a')  
1
  
dict1.setdefault('r')
  
print dict1
  
{'a': 1, 'c': 3, 'b': 2, 'd': 4, 'r': None, 'v': 1}
  10、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
dict1={"a":1,"b":2,"c":3,"d":4}  
dict1.pop('a')
  
1
  
dict1.pop('e')
  
Traceback (most recent call last):
  
  Python Shell, prompt 95, line 1
  
KeyError: 'e'
  11、popitem()随机删除字典中的一对键和值,返回值为元组,元组的元素是被删除的键值对
  D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty.
dict1.popitem()  
('c', 3)
  
dict1.popitem()
  
('b', 2)
  12、 iterkeys( )       返回字典键的一个迭代器
  iteritems( )      返回字典键-值对的一个迭代器
  itervalues( )     返回字典值的一个迭代器
  这三种方法都是迭代器,常与for循环结合使用。

运维网声明 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.iyunv.com/thread-551397-1-1.html 上篇帖子: Python数据结构方法简介三————元组 下篇帖子: python--基本数据类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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