Python基础 第四章 字典(1)

通过名称来访问其各个值的数据结构,映射(mapping)。

字典,是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。(键,可能是数、字符串、元组)。

1.1 字典由 键 及其相应的值组成,这种 键-值 对 成为项。键与值,用(:)分隔;项 之间用逗号分隔;整个字典放在花括号{}内。

1.2 字典(以及其他映射类型)中,键 必须是独一无二的,而字典的 值 无需如此。

2.1 函数dict

函数dict,用于从其他映射(如其他字典)或键-值对序列创建字典

1 items = [('name','Elon'), ('age', 42)]
2 d = dict(items)
3 print(d)
4 结果:
5 {'name': 'Elon', 'age': 42}

也可使用 关键字实参 来调用该函数

1 d = dict(name = 'Elon', age = 42)
2 print(d)
3 结果:
4 {'name': 'Elon', 'age': 42}

2.2 基本的字典操作

len(d) #返回字典d包含的项数
d[k] #返回与键k相关联的值
d[k] = v #将值 v 关联到键k
del d[k] #删除键为k的项
k in d #检查字典d是否包含键为 k 的项

(1)* 键的类型:字典中的键可以是任何不可变的类型,如浮点数、字符串或元组;

(2)* 自动添加:即便字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。(但是列表不行,必须使用类似append的方法)

 1 x = []
 2 x[42] = 'Foodbar'
 3 print(x)
 4 结果:
 5 Traceback (most recent call last):
 6   File "D:/Python/PycharmProjects/untitled1/venv/Robots_learning.py", line 1080, in <module>
 7     x[42] = 'Foodbar'
 8 IndexError: list assignment index out of range
 9 
10 x1 = {}
11 x1[42] = 'Foodbar'
12 print(x1)
13 结果:
14 {42: 'Foodbar'}

(3)成员资格:表达式 k in d,查找的是键(列表 v in l 查找的是值,非索引)。检查字典的键效率更高,尤其是数据结构越大,效率差距越大。

 1 # 一个简单的数据库
 2 
 3 # 一个将人名用作键的字典。每个人都用一个字典表示,
 4 # 字典包含'phone'和'addr',他们分别于电话号码和地址相关联
 5 people = {
 6     'Alice':{
 7         'phone': '2341',
 8         'addr': 'Foo drive 23'
 9     },
10     'Beth':{
11         'phone': '9102',
12         'addr': 'Bar street 43'
13     },
14     'Cecil':{
15         'phone': '3158',
16         'addr': 'Baz avenue 90'
17     }
18 
19 }
20 
21 # 电话号码和地址的描述性标签,供打印输出时使用
22 labels = {
23     'phone': 'phone number',
24     'addr': 'address'
25 }
26 
27 name = input('Name:')
28 
29 # 要查找电话号码还是地址?
30 request = input('Phone number (p) or adress (a)')
31 
32 # 使用正确的键:
33 if request == 'p': key = 'phone'
34 if request == 'a': key = 'addr'
35 
36 # 仅当名字是字典包含的键时才打印信息:
37 if name in people:
38     print("{}'s {} is {}.".format(name,labels[key],people[name][key]))

结果:

1 Name:Beth
2 Phone number (p) or adress (a)p
3 Beth's phone number is 9102.

猜你喜欢

转载自www.cnblogs.com/ElonJiang/p/11326631.html