《python基础教程》笔记之字典

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

字典创建字典由多个键值对组成,每个键和对应值之间用冒号隔开,项之间用逗号隔开,而整个字典用一对大括号括起来,如

>>> phonebook={'alice':'0123', 'Betch':'4567', 'Cecil':'7854'}

>>> phonebook

{'Betch': '4567', 'alice': '0123', 'Cecil': '7854'}

dict -- 通过其他映射、(键,值)这样的序列对或者关键字建立字典,如

>>> items = [('name', 'gtum'), ('age', 42)]

>>> d = dict(items)

>>> d

{'age': 42, 'name': 'gtum'}

>>> d['age']

42

>>> d = dict(name='gtum', age=42)

>>> d

{'age': 42, 'name': 'gtum'}

基本操作len(d) -- 返回d中项(键值对)的数量

d[k] -- 返回关联到键k上的值

d[k] = v -- 将值v关联到键k上

del d[k] -- 删除键为k的项

k in d -- 检查d中是否含有键为k的项

字典与列表区别,如下

键类型: 字典的键可以为任何不可变类型

自动添加:即是那个键起初在字典中并不存在,也可以为它分配一个值

>>> x = {}

>>> x[42] = 'f'

>>> x

{42: 'f'}

成员资格:k in d查找的是键

#简单数据库#使用人名作为键的字典。每个人用另一个字典来表示,其键’phone‘和’addr‘分别表示他们的电话号码和地址

people={'Alice':{'phone':'2341','addr':'Foo drive 23'},'Beth':{'phone':'9102','addr':'Bar Street 42'},'Cecil':{'phone':'3158','addr':'Baz avenue 90'}

}#针对电话号码和地址使用的描述性标签,会在打印输出的时候用到

labels={'phone':'phone number','addr':'address'}

name=raw_input('Name:')#查找电话号码还是地址?使用正确的键:

request=raw_input('key(p/a):')#使用正确的键:if request =='p':key ='phone'if request =='a':ker ='addr'#如果名字是字典中的有效键才打印信息if namein people :PRint"%s's %s is %s." %\

(name, labels[key], people[name][key])

结果

Name:Beth

key(p/a):p

Beth's phone number is 9102.

字典格式化字符串只以字符串作为键的字典来格式化字符串,如

>>> phonebook={'alice':'0123', 'Betch':'4567', 'Cecil':'7854'}

>>> "alice's phnoe is %(alice)s." % phonebook

"alice's phnoe is 0123."

字典方法clear -- 清楚字典中所有的项,直接作用在原字典上

copy -- 返回一个具有相同键值对的薪资点,浅拷贝

>>> x={'username':'admin','machines':['foo','bar']}

>>> y = x.copy()

>>> y['username'] = 'mlh'

>>> y['machines'].remove('foo')

>>> y

{'username': 'mlh', 'machines': ['bar']}

>>> x

{'username': 'admin', 'machines': ['bar']}

deecopy -- 深拷贝

fromkeys -- 使用给定的键建立新的字典,每个键默认对应的值为None,或者自己提供默认值

>>> x = dict.fromkeys(['name', 'age'], 'un')

>>> x

{'age': 'un', 'name': 'un'}

get -- 访问字典,访问一个不存在的键时,返回None,或者自定义默认返回值

>>> x.get('it', 'n/a')

'n/a'

#使用get()的简单数据库people={'Alice':{'phone':'2341','addr':'Foo drive 23'},'Beth':{'phone':'9102','addr':'Bar Street 42'},'Cecil':{'phone':'3158','addr':'Baz avenue 90'}

}#针对电话号码和地址使用的描述性标签,会在打印输出的时候用到labels={'phone':'phone number','addr':'address'}

name=raw_input('Name:')#查找电话号码还是地址?request=raw_input('key(p/a):')#使用正确的键:key = request#如果请求既不是'p'也不是'a'ifrequest =='p':key ='phone'ifrequest =='a':key ='addr'#使用get()提供默认值person =people.get(name, {})

label=labels.get(key, key)

result= person.get(key,'not available')print"%s's %s is %s."%\

(name, label, result)

结果如下

Name:Beth

key(p/a):a

Beth's address is Bar Street 42.

has_key -- 检查字典中是否含有给出的键

items -- 将所有的字典项以列表方式返回,这些列表项中的每一项都来自(键,值)

iteritems -- 返回迭代器

keys -- 将字典中的键以列表形式返回

iterkeys -- 返回针对键的迭代器

pop -- 获得对应于给定键的值,然后将这个键值对从字典中移除

popitem -- 弹出随机的项

setdefault -- 获得与给定键相关联的值,在字典中不含有给定键的情况下设定相应的键值

>>> x={'username':'admin','machines':['foo','bar']}

>>> x.pop('username')

'admin'

>>> x={'username':'admin','machines':['foo','bar']}

>>> x.setdefault('hh', 'n/a')

'n/a'

>>> x

{'username': 'admin', 'hh': 'n/a', 'machines': ['foo', 'bar']}

>>> x['hh'] = 'hh'

>>> x.setdefault('hh', 'n/a')

'hh'

>>> x

{'username': 'admin', 'hh': 'hh', 'machines': ['foo', 'bar']}

update -- 利用一个字典项更新另外一个字典项,提供的字典的项会被添加到旧的字典中,若有相同的键则会进行覆盖

>>> x={'username':'admin','machines':['foo','bar']}

>>> y={'hh':'haha'}

>>> x.update(y)

>>> x

{'username': 'admin', 'hh': 'haha', 'machines': ['foo', 'bar']}

values -- 以列表的形式返回字典中的值,列表中可以包含重复的元素

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航