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

[经验分享] Python的字典 { }

[复制链接]

尚未签到

发表于 2018-8-6 07:19:36 | 显示全部楼层 |阅读模式
  Python的字典属于一种数据类型,我们可以把数据存到字典里面,字典使用大括号“{}”来定义。
  比如现在要存储一个人的信息然后读取出来,就可以使用切片的方式来体现:
  

In [1]: info ='Tom 180 Male'  

  
In [2]: info[1:3]
  
Out[2]: 'om'
  

  
In [3]: info[0:3]
  
Out[3]: 'Tom'
  

  那么如果我们要存很多人的信息呢?
  也许我们可以先把信息单个地分别存到一个列表里,然后再把他们合并,然而这样的方式在数据量很大的情况下是很麻烦的,如下所示:
  

In [4]: list1=['name','age']  

  
In [5]: list2=['tom','20']
  

  
In [6]: list3=['mike','24']
  

  
In [7]: zip(list1,list2)
  
Out[7]: [('name', 'tom'), ('age', '20')]
  

  
In [8]: list1
  
Out[8]: ['name', 'age']
  

  
In [9]: list2
  
Out[9]: ['tom', '20']
  

  
In [10]: zip(list1,list3)
  
Out[10]: [('name', 'mike'), ('age', '24')]
  

  字典是Python中唯一的映射类型(哈希表),其对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值,方法可以有:
  keys()
  values()
  items();
  首先我们可以创建一个空字典:
  

In [11]: dict={}  

  
In [12]: type(dict)
  
Out[12]: dict
  

  往里面定义数据如下:
  

In [13]: dict={'a':1,1:123}  

  
In [14]: dict
  
Out[14]: {1: 123, 'a': 1}                #顺序是可变的,因为遵循哈希表
  

  存入字典的数据类型应该用只读的,应保持哈希的结果不变:
  

In [15]: dict1={'a':1, 1:123, ('qq','wx'):'hello'}  

  
In [16]: dict1
  
Out[16]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'}
  

  查看字典的长度,可以看到我们刚刚定义的字典有3个元素:
  

In [17]: len(dict1)  
Out[17]: 3
  

  在ipython中使用tab键我们可以查看字典有多少种方法
  

In [18]: dict.  
dict.clear       dict.has_key     dict.itervalues  dict.setdefault  dict.viewkeys
  
dict.copy        dict.items       dict.keys        dict.update      dict.viewvalues
  
dict.fromkeys    dict.iteritems   dict.pop         dict.values
  
dict.get         dict.iterkeys    dict.popitem     dict.viewitems
  

  查看所有的keys值:
  

In [18]: dict1.keys()  
Out[18]: ['a', 1, ('qq', 'wx')]
  

  查看所有的values值,也会同样返回一个列表,里面是字典所存储的所有values值:
  

In [19]: dict1.values()  
Out[19]: [1, 123, 'hello']
  

  使用keys值查找values值:
  

In [16]: dict1  
Out[16]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'}
  

  
In [22]: dict1.get(1)
  
Out[22]: 123
  

  如果keys值不在所取的字典里,不会返回值,但是给定了keys,values的话,则会返回给的values值:
  

In [24]: dict1.get('b')  

  
In [25]: dict1.get('b','c')
  
Out[25]: 'c'
  

  判断keys是否存在于字典:
  

In [26]: 'v' in dict1  
Out[26]: False
  

  
In [27]: 'a' in dict1
  
Out[27]: True
  

  或者也可以这样判断:
  

In [28]: dict1.has_key('v')  
Out[28]: False
  

  
In [29]: dict1.has_key('a')
  
Out[29]: True
  

  使用items可以将字典返回为一个列表,成为列表之后就可以对其遍历,或者切片,然后得到想要的结果:
  

In [16]: dict1  
Out[16]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'}
  

  
In [30]: dict1.items()
  
Out[30]: [('a', 1), (1, 123), (('qq', 'wx'), 'hello')]
  

  往字典里面更新内容,或者把两个字典更新成一个字典:
  

In [35]: dict1  
Out[35]: {1: 123, 'a': 1, ('qq', 'wx'): 'hello'}
  

  
In [36]: dict2
  
Out[36]: {'e': 3, 'q': 1, 'w': 2}
  

  
In [37]: dict.update(dict1,**dict2)
  

  
In [38]: dict
  
Out[38]: {1: 123, 'a': 1, 'e': 3, 'q': 1, 'w': 2, ('qq', 'wx'): 'hello'}
  

  用for循环输出字典的keys和values:
  

In [47]: for k in dict1:  ....:     print k,dict1[k]
  ....:
  
a 1
  
1 123
  
('qq', 'wx') hello
  

  或者先用items让字典返回一个列表,再for循环:
  

In [50]: dict1.items()  
Out[50]: [('a', 1), (1, 123), (('qq', 'wx'), 'hello')]
  

  
In [51]: for k, v in dict1.items(): print k,v
  
a 1
  
1 123
  
('qq', 'wx') hello
  

  字典练习
  

#!/usr/local/python3/bin/python  

  
info={}
  
name=input("Please input a number : ")
  
age=input("Please input your age : ")
  
sex=input("Please input your sex(M/F) : ")
  

  
info['name']=name  #下标为name的存到info字典里面
  
info['age']=age
  
info['sex']=sex
  

  
#print(info)
  
#print(info.items())
  

  
for i,w in info.items():
  print('%s : %s' % (i,w))
  

  运行情况如下:
  

Please input a number : zyy  
Please input your age : 21
  
Please input your sex(M/F) : F
  
name : zyy
  
age : 21
  
sex : F

运维网声明 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-547265-1-1.html 上篇帖子: python编码规范 下篇帖子: Python中的元编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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