您的位置:首页 > 编程语言 > Python开发

【学神-RHEL7】P6-Python字典的使用

2016-01-14 22:24 537 查看
本节所讲内容:
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

字典在脚本中的使用
创建一个小程序,查询公司内部员工的个人信息
[root@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'
}
}

[root@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

执行结果:
[root@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]

学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589

本文出自 “学神IT教育-讲师MK” 博客,请务必保留此出处http://xuegodlinux.blog.51cto.com/10844319/1735144
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: