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

[经验分享] Python字典的使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-15 08:21:19 | 显示全部楼层 |阅读模式
本节所讲内容:
       1)字典的创建
       2)字典的基本操作
       3)字典的方法
在Python中通过字典可以通过查找某个特定的键,从而找到它的值
6.1          字典的创建
6.1.1       语法格式
{‘a’:123,‘b’:234,‘c’:345,……}
例:
>>>{'rm':1511,'find':1509,'mk':1508}
{'rm': 1511, 'find':1509, 'mk': 1508}
将字典赋值给一个变量可以实现轻松查找
>>> xuegod ={'rm':1511,'find':1509,'mk':1508}
>>> xuegod['mk']
1508
注:在字典中的键是唯一的,而值并不唯一

6.1.2       通过dict函数创建字典
>>> Iphone =('Iphone',5999)
>>> LV = ('LV',999)
>>> item =[Iphone,LV]
>>> d = dict(item)
>>> d
{'LV': 999, 'Iphone': 5999}

如果现在商场进了一批红塔山,通过dict可以快速添加字典里
>>> Hongtashan =('Hongtashan',7)
>>> item
[('Iphone', 5999), ('LV',199999), ('Hongtashan', 7)]
>>> d =dict(item)
>>> d
{'LV': 199999, 'Iphone':5999, 'Hongtashan': 7}

通过dict方便对字典内容进行更新


4.2          字典的基本操作
字典的基本行为在很多方面与序列类似
假设现在有个字典名为d
len(d)            返回字典d中项(键-值对)的数量
d[]                 返回关联到键上的值
d[a]=b           将值b关联到键a上
del  d[k]        删除键为k的项
k  in  d         检查d中是否有含有键为k的项

>>> d
{'LV': 999, 'QiaQia': 9,'Iphone': 5999}
>>> len(d)
3
>>> d['LV']
999
>>> d['LV']=1000
>>> d
{'LV': 1000, 'QiaQia': 9,'Iphone': 5999}
>>> del d['LV']
>>> d
{'QiaQia': 9, 'Iphone': 5999}
>>> 'QiaQia' in d
True


字典在脚本中的使用
创建一个小程序,查询公司内部员工的个人信息
[iyunv@xuegod163 ~]# vim people.py
#!/usr/bin/python
people = {
        'mv':{
                'phone': '2341',
                'addr': 'BeiJing'
        },
        'mk': {
                'phone': '9102',
                'addr': 'HeBei'
        },
        'find':{
                'phone': '3158',
                'addr': 'ShanDong'
        },
        'docker':{
                'phone': '4556',
                'addr': 'ShanXi'
        }
}

[iyunv@xuegod163 ~]# vim phone.py
#!/usr/bin/python
#coding=utf-8
import people
people = people.people
#变量名  模块名  模块中定义的字典名
labels = {
        'phone': 'phone number',
        'addr': 'address'
}

while True:
        name = raw_input('Name: ')
        while name in people:
                request = raw_input('Phonenumber (p) or address (a)?')

                if request == 'p' : key = 'phone'
                if request == 'a' : key ='addr'

                print "%s's %s is%s." % \
                (name, labels[key],people[name][key])
                break
        else:
                YN = raw_input("The userdoes not exist,enter username again?(Y/N)")
                if YN == 'N' :
                        print "Program isstopping!!!"
                        break
                if YN == 'Y' : continue

执行结果:
[iyunv@localhost ~]#python phone.py
Name: mk
Phone number (p) oraddress (a)?a
mk's address is HeBei.
Name: rn
The user does notexist,enter username again?(Y/N)N
Program is stopping!!!


6.3          字典的方法
1)  清空字典中的所有项clear
>>> example ={'rm':1511,'find':1509,'mk':1508,'docker':1506}
>>> example
{'rm': 1511, 'docker':1506, 'find': 1509, 'mk': 1508}
>>>example.clear()
>>> example
{}
>>> example = {}

2)创建一个具有相同项的新字典copy
>>> y =example.copy()
>>> y
{'rm': 1511, 'docker':1506, 'find': 1509, 'mk': 1508}

3)根据给定的键创建一个空值的字典fromkeys
>>>{}.fromkeys(['mv','yum'])
{'mv': None, 'yum': None}

默认的空值为None也可以用以下方法手动指定
>>>{}.fromkeys(['mv','yum'],'(unknown)')
{'mv': '(unknown)','yum': '(unknown)'}

4)访问空值,不报错,返回None值get
>>> example ={'rm':1511,'find':1509,'mk':1508,'docker':1506}
>>> printexample.get('mv')
None

5)检查字典中是否包含特定键has_key,表达式d.has_key(k)等同于k  in  d
>>> example
{'rm': 1511, 'docker':1506, 'find': 1509, 'mk': 1508}
>>>example.has_key('mv')
False

6)以列表的方式返回字典中的所有项items
>>>example.items()
[('rm', 1511), ('docker',1506), ('find', 1509), ('mk', 1508)]

与items相似的有iteritems方法,区别在于item返回的是一个列表,iteritems返回一个迭代器,方便对其调用
>>> it =y.iteritems()
>>> list(it)
[('rm', 1509), ('docker',1506), ('find', 1508), ('mk', 1504)]

7)将字典中的键以列表方式返回keys,而iterkeys则返回针对键的迭代器
>>> example
{'rm': 1511, 'docker': 1506,'find': 1509, 'mk': 1508}
>>>example.keys()
['rm', 'docker', 'find','mk']
>>> a =example.keys()
>>> list(a)
['rm', 'docker', 'find','mk']

8)获取给定键的值,并将此项从字典中移除pop
>>> example
{'rm': 1511, 'docker': 1506,'find': 1509, 'mk': 1508}
>>> example.pop('rm')
1511
>>> example
{'docker': 1506, 'find': 1509,'mk': 1508}

9)随机移除列表中的项popitem
>>>example.popitem()
('docker', 1506)

10)用一个字典更新另一个字典update
>>> example
{'mk': 1508}
>>> xuegod ={'rm':1511,'find':1509,'docker':1506}
>>>example.update(xuegod)
>>> example
{'rm': 1511, 'docker':1506, 'find': 1509, 'mk': 1508}

11)以列表的方式返回字典中的值values,返回值的迭代器itervalues
>>>example.values()
[1511, 1506, 1509, 1508]

>>> a=example.itervalues()
>>> list(a)
[1511, 1506, 1509, 1508]


运维网声明 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-164544-1-1.html 上篇帖子: Centos下安装Python3.5 下篇帖子: python datetime模块的timedelta
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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