字典(dict)型数据结构
字典(dict)型数据结构
在C语言中,结构体可以将变量与变量之间相关联地储存起来,Python中也有与之类似的一种结构,叫做字典(dict),它能将键key
与值value
一一对应然后储存起来。 ## 1.字典的建立 前面学过的总结一下: 列表list = ['element_1','element_2',...]
元组tuple = ('element_1','element_2',...)
字典的表示方式为:dict = {'key_1':'value_1','key_2':'value_2',...}
### 直接定义 设计一个游戏,其中包含一些外星人,这些外星人的颜色和分数各不同,我们要存储这些信息就需要用到字典: 1
2
3
4alien_0 = {'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])key
,其对应的value
就被打印出来: 1
2green
5key
-value
来达到构建字典的目的: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#部分定义
alien_0 = {'color':'green','points':5}
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
#空定义
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)1
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
value
1
2
3
4
5
6
7
8
9
10
11
12#更改dict中的value
alien_0 = {'color':'green'}
print('The alien is ' + alien_0['color'] + '.')
alien_0['color'] = 'yellow'
print('The alien is ' + alien_0['color'] + '.')
#利用del语句删除key-value
alien_0 = {'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)1
2
3
4
5
6#更改dict中的value
The alien is green.
The alien is yellow.
#利用del语句删除key-value
{'color': 'green', 'points': 5}
{'color': 'green'}key
-value
永远消失,操作是不可逆的 ## 3. 遍历字典 由于字典是由一个或者无数个key
-value
构成的,因此在遍历的时候要首先确定需要遍历的是什么,是key
-value
还是key
,或者只是value
: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#遍历所有的key-value -> dict.items()
user = {
'username':'hank.gan@foxmail.com',
'passport':'123456',
'verification code':'SC9D'}
for key,value in user.items(): #此处的key、value可以是任何变量名
print('\nkey: ' + key)
print('value: ' +value)
#遍历所有的key -> dict.keys()
user = {
'username':'hank.gan@foxmail.com',
'passport':'123456',
'verification code':'SC9D'}
for key in user.keys():
print('key: ' + key)
#遍历所有的value -> dict.values()
user = {
'username':'hank.gan@foxmail.com',
'passport':'123456',
'verification code':'SC9D'}
for value in user.values():
print('value: ' +value)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#遍历所有的key-value -> dict.items()
key: username
value: hank.gan@foxmail.com
key: passport
value: 123456
key: verification code
value: SC9D
#遍历所有的key -> dict.keys()
key: username
key: passport
key: verification code
#遍历所有的value -> dict.values()
value: hank.gan@foxmail.com
value: 123456
value: SC9Dset
具有数学中集合类似的意义:set
中的元素不能有重复。set是用来存放key
的,因此可以得出key
也是一个唯一且不重复的值,那么如果定义了两遍同一个key
会怎么样呢?详见上述修改字典的value
下面一个简单的例子来说明set
的作用: 1
2
3
4
5
6
7
8favourite_bikes = {
'hank':'santa cruz',
'jack':'giant',
'tim':'specialized',
'phill':'giant',
'edward':'specialized'}
for value in set(favourite_bikes.values()):
print(value)1
2
3specialized
giant
santa cruzvalue
在list或dict中重复多少次,在转化为set
后都有且只有一个 ## 4. 字典的嵌套 ### a. 字典列表 如果一个项目存在多个类似的字典,而又需要统一管理它们,比如在攻击外星人这种游戏中关于外星人的设定,我们可以用一个总体列表来表示外星人这一群体: 1
2
3
4
5
6
7
8alien_0 = {'color':'green','points':5}
alien_1 = {'color':'yellow','points':10}
alien_2 = {'color':'red','points':15}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)1
2
3{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}range()
可以解决这个问题并且可以用条件语句和切片来对字典的value
进行修改: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19aliens = []
for alien_number in range(30):
new_alien = {'color':'green','points':5}
aliens.append(new_alien)
#第四个外星人后属性改变
for alien in aliens[3:8]:
if alien['color'] == 'green':
alien['color'] = 'yellow'
alien['points'] = 10
#第八个外星人后属性改变
for alien in aliens[7:]:
if alien['color'] == 'green':
alien['color'] = 'red'
alien['points'] = 15
#显示修改后的情况
for alien in aliens[:10]:
print(alien)1
2
3
4
5
6
7
8
9{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'yellow', 'points': 10}
{'color': 'yellow', 'points': 10}
{'color': 'yellow', 'points': 10}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
{'color': 'red', 'points': 15}key
对应多个value
,比如,加在披萨中的配料可能不止一种,怎么办?这个时候就需要在字典中嵌套列表来实现: 1
2
3
4
5
6pizza = {
'crust':'thick',
'toppings':['mushrooms','extra cheese']}
print('You ordered a ' +pizza['crust'] + '-crust pizza' + 'with the following toppings:')
for topping in pizza['toppings']:
print('\t' + topping)1
2
3You ordered a thick-crust pizzawith the following toppings:
mushrooms
extra cheese1
2
3
4
5
6
7
8
9
10
11
12
13
14
15users = {
'hank':{
'username':'hank.gan@foxmail.com',
'passport':'123456',
'verification code':'SC9D'
},
'tim':{
'username':'tim.cook@foxmail.com',
'passport':'654321',
'verification code':'BVR3'
}
}
for user,user_info in users.items():
print('Hello, ' + user.title() +' Your email is ' + user_info['username'] + '.And your passport is ' + user_info['passport'] + '.Please fill the verification code: ' + user_info['verification code'] + '.')1
2Hello, Hank Your email is hank.gan@foxmail.com.And your passport is 123456.Please fill the verification code: SC9D.
Hello, Tim Your email is tim.cook@foxmail.com.And your passport is 654321.Please fill the verification code: BVR3.
字典(dict)型数据结构