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

[经验分享] Python中的字典及举例

[复制链接]

尚未签到

发表于 2018-8-4 06:24:38 | 显示全部楼层 |阅读模式
  字典
  字典是python中的唯一的映射类型(哈希表)
  字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值。
  字典的方法
  keys()
  values()
  items()
  举例如下:
  In [10]: dic = {}
  In [11]: type(dic)
  Out[11]: dict
  In [12]: dic = {'a':1,1:123}
  In [13]: dic
  Out[13]: {1: 123, 'a': 1}
  In [14]: dic = {'a':1,1:123,('a','b'):'hello'}
  In [15]: dic = {'a':1,1:123,('a','b'):'hello',[1]:1}
  ---------------------------------------------------------------------------
  TypeError                                 Traceback (most recent call last)
  <ipython-input-15-4fc52e86cb96> in <module>()
  ----> 1 dic = {'a':1,1:123,('a','b'):'hello',[1]:1}
  TypeError: unhashable type: 'list'
  In [16]: len(dic)
  Out[16]: 3
  In [17]: dic.keys()
  Out[17]: ['a', 1, ('a', 'b')]
  In [18]: dic.values()
  Out[18]: [1, 123, 'hello']
  In [19]: dic.get('a')
  Out[19]: 1
  In [20]: dic
  Out[20]: {1: 123, 'a': 1, ('a', 'b'): 'hello'}
  In [21]: dic[1]
  Out[21]: 123
  更改字典内value:
  In [22]: dic['a'] = 2
  In [23]: dic
  Out[23]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}
  查看是不是在字典里
  In [28]: 'b' in dic
  Out[28]: False
  In [29]: 'a' in dic
  Out[29]: True
  In [30]: dic.has_key('a')
  Out[30]: True
  In [31]: dic.has_key('b')
  Out[31]: False
  变为列表:
  In [32]: dic.items()
  Out[32]: [('a', 2), (1, 123), (('a', 'b'), 'hello')]
  In [33]: dic
  Out[33]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}
  复制字典:
  In [34]: dic1 = dic.copy()
  In [35]: dic1
  Out[35]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}
  In [36]: dic
  Out[36]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}
  删除字典内容:
  In [37]: dic.pop(1)
  Out[37]: 123
  In [38]: dic
  Out[38]: {'a': 2, ('a', 'b'): 'hello'}
  In [39]: dic.pop(2)
  ---------------------------------------------------------------------------
  KeyError                                  Traceback (most recent call last)
  <ipython-input-39-9f97239cddce> in <module>()
  ----> 1 dic.pop(2)
  KeyError: 2
  In [40]:
  更新字典,两个字典更新为一个:
  In [40]: dic1 = {1:1,2:2}
  In [41]: dic.update(dic1)
  In [42]: dic1
  Out[42]: {1: 1, 2: 2}
  In [43]: dic
  Out[43]: {1: 1, 2: 2, 'a': 2, ('a', 'b'): 'hello'}
  创建字典:
  dic = {}
  dic = dict()
  help(dict)
  dict((['a',1],['b',2]))
  dict(a=1,b=2)
  fromkeys(),字典元素有相同的值时,默认为None.
  ddict = {}.formkeys(('x','y'),100)
  dic.fromkeys(range(100),100)
  In [45]: dic.fromkeys('abc')
  Out[45]: {'a': None, 'b': None, 'c': None}
  In [42]: dic = {}
  In [43]: dic
  Out[43]: {}
  In [44]: dict()
  Out[44]: {}
  In [45]: dict(x=10,y=100)
  Out[45]: {'x': 10, 'y': 100}
  In [46]: dict([('a',10),('b',20)])
  Out[46]: {'a': 10, 'b': 20}
  访问字典:
  In [10]: dic={1:1,2:3,3:5}
  In [11]: dic
  Out[11]: {1: 1, 2: 3, 3: 5}
  In [12]: dic[2]
  Out[12]: 3
  In [13]: dic.items()
  Out[13]: [(1, 1), (2, 3), (3, 5)]
  for循环访问:
  In [15]: for i in dic:
  ....:     print i,dic
  ....:
  1 1
  2 3
  3 5
  In [18]: for i in dic:
  ....:     print &quot;%s,%s&quot; % (i,dic)
  ....:
  1,1
  2,3
  3,5
  In [19]: dic
  Out[19]: {1: 1, 2: 3, 3: 5}
  In [19]: dic
  Out[19]: {1: 1, 2: 3, 3: 5}
  In [21]: for k,v in dic.items():print k,v
  1 1
  2 3
  3 5
  字典练习
  写出脚本,根据提示输入内容,并输入到字典中。
  1种:
  [root@localhost python]# cat dict.py
  #!/usr/bin/python
  #Author is fengXiaQing
  #date 2017.12.22
  info = {}
  name = raw_input(&quot;Please input name:&quot;)
  age = raw_input(&quot;Please input age:&quot;)
  gender = raw_input(&quot;Please input (M/F):&quot;)
  info['name'] = name
  info['age'] = age
  info['gender'] = gender
  print info
  [root@localhost python]#
  [root@localhost python]# python dict.py
  Please input name:fxq
  Please input age:20
  Please input (M/F):M
  {'gender': 'M', 'age': '20', 'name': 'fxq'}
  [root@localhost python]#
  2.种
  #!/usr/bin/python
  #Author is fengXiaQing
  #date 2017.12.22
  info = {}
  name = raw_input(&quot;Please input name:&quot;)
  age = raw_input(&quot;Please input age:&quot;)
  gender = raw_input(&quot;Please input (M/F):&quot;)
  info['name'] = name
  info['age'] = age
  info['gender'] = gender
  print info.items()
  [root@localhost python]# python dict.py
  Please input name:fxq
  Please input age:22
  Please input (M/F):M
  [('gender', 'M'), ('age', '22'), ('name', 'fxq')]
  [root@localhost python]#
  3.种
  #!/usr/bin/python
  #Author is fengXiaQing
  #date 2017.12.22
  info = {}
  name = raw_input(&quot;Please input name:&quot;)
  age = raw_input(&quot;Please input age:&quot;)
  gender = raw_input(&quot;Please input (M/F):&quot;)
  info['name'] = name
  info['age'] = age
  info['gender'] = gender
  for i in info.items():
  print i
  print &quot;main end&quot;
  [root@localhost python]# python dict.py
  Please input name:fxq
  Please input age:22
  Please input (M/F):M
  ('gender', 'M')
  ('age', '22')
  ('name', 'fxq')
  main end
  [root@localhost python]#
  4.种
  #!/usr/bin/python
  #Author is fengXiaQing
  #date 2017.12.22
  info = {}
  name = raw_input(&quot;Please input name:&quot;)
  age = raw_input(&quot;Please input age:&quot;)
  gender = raw_input(&quot;Please input (M/F):&quot;)
  info['name'] = name
  info['age'] = age
  info['gender'] = gender
  for k,v in info.items():
  print k,v
  print &quot;main end&quot;
  [root@localhost python]# python dict.py
  Please input name:fxq
  Please input age:22
  Please input (M/F):M
  gender M
  age 22
  name fxq
  main end
  [root@localhost python]#
  5.种
  #!/usr/bin/python
  #Author is fengXiaQing
  #date 2017.12.22
  info = {}
  name = raw_input(&quot;Please input name:&quot;)
  age = raw_input(&quot;Please input age:&quot;)
  gender = raw_input(&quot;Please input (M/F):&quot;)
  info['name'] = name
  info['age'] = age
  info['gender'] = gender
  for k,v in info.items():
  print &quot;%s:%s&quot; % (k,v)
  print &quot;main end&quot;
  [root@localhost python]# python dict.py
  Please input name:fxq
  Please input age:22
  Please input (M/F):M
  gender:M
  age:22
  name:fxq
  main end
  [root@localhost python]#
  6.种
  #!/usr/bin/python
  #Author is fengXiaQing
  #date 2017.12.22
  info = {}
  name = raw_input(&quot;Please input name:&quot;)
  age = raw_input(&quot;Please input age:&quot;)
  gender = raw_input(&quot;Please input (M/F):&quot;)
  info['name'] = name
  info['age'] = age
  info['gender'] = gender
  for k,v in info.items():
  print &quot;%s&quot; % k
  print &quot;main end&quot;
  [root@localhost python]# python dict.py
  Please input name:fxq
  Please input age:22
  Please input (M/F):M
  gender
  age
  name
  main end
  [root@localhost python]#
  练习:
  1. 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码
  dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}
  1) 将该字典按照ASCII码的值排序
  print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)
  2) 有一个字母的ASCII错了,修改为正确的值,并重新排序
  dict1['o']=111
  print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)
  2. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)
  dict2 = dict(zip(string.uppercase,range(65,92)))
  print dict2
  3. 将dict2与第一题排序后的dict1合并成一个dict3
  dict3 = dict(dict1, **dict2)
  # dict3 = dict(dict1, **dict2)等同于下面的两行代码
  # dict3 = dict1.copy()
  # dict3.update(dict2)
  print dict3

运维网声明 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-546099-1-1.html 上篇帖子: 运维python进行(三) 用python写一个自己zabbix的调用方法 下篇帖子: Hacking python系列视频
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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