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

python基础知识之字典的建立、简单操作、格式化字符串

2017-01-09 17:51 926 查看

1.字典的创立和使用

映射是通过名字来引用值的数据结构,字典是python中唯一内建的映射类型。字典有键和对应的值构成键-值对(又叫项),键和值用冒号 (:) 隔开,项之间用逗号 (,) 隔开,整个字典用大括号括起来,空字典则为{}。字典中的值没有特殊的顺序,但是存放在一个特定的键下,键可以是数字、字符串、元组。

>>> phonebook={'wang':'1234','cui':'2345'}
>>>


我们可以用列表建立一个小型的电话号码数据库,如下

>>> name=['wang','cui']
>>> number=['000','111']
>>> number[name.index('cui')]
'111'
>>>


虽然这种办法可行,但是不实用。

1.1 dict 函数

法 1:

用 dict 函数,通过(键,值)对的序列建立字典。

>>> items=[('name','wang'),('number','1234')]
>>> d=dict(items)
>>> d
{'name': 'wang', 'number': '1234'}
>>> d['name']
'wang'
>>> items=[('name','wang'),('number','1234'),('age','25')]
>>> d
{'name': 'wang', 'number': '1234','age':'25'}
>>>


法2:

dict 函数通过关键字参数创建字典,如下

>>> d=dict(name='wang',number='1234')
>>> d
{'number': '1234', 'name': 'wang'}
>>>


1.2 基本的字典操作

字典的基本行为与列表类似:

- len(d) 返回字典中的项的数量;

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

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

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

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

>>> d=dict(name='wang',number='1234')
>>> d
{'number': '1234', 'name': 'wang'}
>>>len(d)
2
>>> d['number']
'1234'
>>> d['age']=25
>>> d
{'age': 25, 'number': '1234', 'name': 'wang'}
>>> del d['age']
>>> d
{'number': '1234', 'name': 'wang'}
>>> 'age' in d
False
>>> 'name' in d
True
>>> 'number' in d
True
>>>


1.2.1 字典和列表的区别

键类型:字典的键是唯一的,但是可以为任意不可变类型,例如整型、浮点型、字符串、元组。

自动添加:即使键起初在字典中不存在,也可以通过给它赋值,建立新的项。

成员资格:字典中的成员资格查找的是键,不是值,列表中的是查找值,而不是索引。

>>> x=[]
>>> x[42]='bar'

Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
x[42]='bar'
IndexError: list assignment index out of range
>>> x={}
>>> x['age']='25'
>>> x
{'age': '25'}
>>>


字典示例:

#一个简单的数据库
#字典使用人名作为键。每个人用另一个字典来表示,其键‘phone’和‘addr’分别表示他们的电话号码和地址
people={
'Alice':{
'phone':'2341',
'addr':'foo drive 23'
},
'Beth':{
'phone':'9012',
'addr':'bar street 43'
},
'Cecil':{
'phone':'3158',
'addr':'baz avenue 90'
}
}
#针对电话号码和地址使用的描述性标签,会打印输出的时候用到
labels={
'phone':'phone number',
'addr':'address'
}

name=raw_input('Name:')
#查找电话号码还是地址
request=raw_input('Phone number(p) or address(a)?')

#使用正确的键
if request =='p':key='phone'
if request =='a':key='addr'

#如果名字是字典中的有效键才打印信息
if name in people:print "%s's %s is %s." %\
(name,labels[key],people[name][key]

ab29
)


运行结果为:

>>> ================ RESTART================
>>>
Name:Cecil
Phone number(p) or address(a)?p
Cecil's phone number is 3158.
>>> ================= RESTART ===============
>>>
Name:Beth
Phone number(p) or address(a)?a
Beth's address is bar street 43.
>>>


1.3 字典的格式化字符串

在每个转换说明符中的 % 后面,可以加上键(用圆括号括起来),后面再跟上其它说明元素。

>>> phonebook={'wang':'1234','cui':'2345'}
>>>"wang 's number is %(wang)s " % phonebook
"wang 's number is 1234 "
>>> "wang 's number is % (wang)s" % phonebook

Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
"wang 's number is % (wang)s" % phonebook
ValueError: unsupported format character '(' (0x28) at index 20
>>> "wang 's number is %('wang')s " % phonebook

Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
"wang 's number is %('wang')s " % phonebook
KeyError: "'wang'"
>>>


注意:%(键)s ,中只是用键名,而且 % 后面跟的字符之间没有空格。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: