字典
引入
alien_0={'color':'green','point':5}
print(alien_0['color'])
print(alien_0['point'])
结果
green
5
介绍
字典是键值对的集合,与键相关连的值可以是数字,字符串,列表乃至字典,事实上可以把任何python对象作为值
在python中:字典用花括号来表示
字典的增删查改
查找键值对
格式:字典名[键]
如上面的print(alien_0['color'])
添加键值对
格式:字典名[需要添加的键]=需要添加的值
alien_0={'color':'green','point':5}
print(alien_0)
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)
结果
{'color': 'green', 'point': 5}
{'color': 'green', 'point': 5, 'x_position': 0, 'y_position': 25}
*也可以新建一个空的字典,然后按照上述方法进行键值对的增加 *
修改字典中的值
和增加键值对的方式差不多,不过此时方括号内应为存在的键
alien_0={'color':'green','point':5}
print(alien_0)
alien_0['name']='wang'#本来不存在'name'这个键,那么就会添加
print(alien_0)
alien_0['name']='yellow'#已经存在'name'这个键,那么就会更改
print(alien_0)
结果
{'color': 'green', 'point': 5}
{'color': 'green', 'point': 5, 'name': 'wang'}
{'color': 'yellow', 'point': 5, 'name': 'wang'}
一个例子:根据外星人的移动速度来确定新的坐标
alien_0={'x_position':0,'y_position':25,'speed':'medium'}
print("Original x-positon:"+str(alien_0['x_position']))
if alien_0['speed']=='slow':
x_increament=1
elif alien_0['speed']=='medium':
x_increament=2
else:
x_increament=3
alien_0['x_position']=alien_0['x_position']+x_increament
print("New x-position:"+str(alien_0['x_position']))
结果
Original x-positon:0
New x-position:2
通过修改字典中的speed,就可以根据speed来更改x_increment的值了
删除字典中的值
和删除列表元素一样,del也可以用来删除字典中的键值对,指定字典名和删除键即可
alien_0={'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)
结果
{'color': 'green', 'points': 5}
{'color': 'green'}
对于较长文本的存储和输出
favorite_language={
'jen':'python',
'wangyi':'java',
'daming':'c++',
'sam':'rust',
}
print("sam`s favorite_language is"+
favorite_language['sam'].title()+
".")
字典的遍历
python提供了遍历字典的所有键值对,所有键和所有值的方法
遍历字典中所有的键值对
favorite_language={
'daming':'c++',
'jen':'python',
'sam':'rust',
'wangyi':'java',
}
for name,language in favorite_language.items():
print(name.title()+"`s favorite_language is"+
language.title()+'.')
name和language是两个变量,后面字典的items()方法返回一个键值对列表
注意:有时遍历并不一定返回的顺序和存储的顺序相同,但是键值对肯定是一一对应的
结果
Daming`s favorite_language isC++.
Jen`s favorite_language isPython.
Sam`s favorite_language isRust.
Wangyi`s favorite_language isJava.
遍历字典中所有的键
favorite_language={
'daming':'c++',
'jen':'python',
'sam':'rust',
'wangyi':'java',
}
friends=['wangyi','sam']
for name in favorite_language.keys():#keys()可以省略,因为默认访问键
print(name.title())
if(name in friends):#如果字典中的名字在列表中的话打印额外信息
print("hi")
实际上keys()不仅仅可以用来遍历,它实际上返回一个列表
favorite_language={
'daming':'c++',
'jen':'python',
'sam':'rust',
'wangyi':'java',
}
if 'sam' in favorite_language.keys():#判断是有'sam'这个键
print("yes")
按顺序遍历字典中的所有键
favorite_language={
'daming':'c++',
'jen':'python',
'sam':'rust',
'wangyi':'java',
}
for name in sorted(favorite_language.keys()):
print(name)#先用keys()返回一个列表,然后排序输出
结果(按照字典序输出了)
daming
jen
sam
wangyi
遍历所有的值
与遍历所有的键的区别是,调用values()方法即可
解决元素重复问题
favorite_language={
'daming':'c++',
'jen':'python',
'sam':'rust',
'wangyi':'java',
'yx':'java',
}
for language in set(favorite_language.values()):
print(language)
使用set()可以剔除重复元素
结果(可以看到,并没有按照既定顺序输出)
python
rust
java
c++
嵌套
将字典存储在列表中
将字典存储在列表中或者将列表存放在字典中,这个称为嵌套
案例1
#创建一个用于存储外星人的列表
aliens=[]
#生成三十个外星人的字典,并添加到列表中
for i in range(0,30):
new_alien={'speed':'slow','color':'green','points':5}
aliens.append(new_alien)
#更改前三个外星人的信息
for alien in aliens[0:3]:
if alien['color']=='green':
alien['color']='yellow'
alien['speed']='medium'
alien['points']=10
#显示前五个外星人
for alien in aliens[:5]:
print(alien)
print("......")
#显示这个列表的长度
print(str(len(aliens)))
结果
{'speed': 'medium', 'color': 'yellow', 'points': 10}
{'speed': 'medium', 'color': 'yellow', 'points': 10}
{'speed': 'medium', 'color': 'yellow', 'points': 10}
{'speed': 'slow', 'color': 'green', 'points': 5}
{'speed': 'slow', 'color': 'green', 'points': 5}
应用举例:在users这个列表中存放多个user字典来表示所有用户
将列表存放在字典中
#存储所点的披萨的信息
pizza={
'crust':'thick',
'toppings':['mushrooms','extra cheese'],
}
#描述所点的披萨的信息
print("you orderd a"+pizza['crust']+"-crust pizza"+
"with the following toppings:")
for topping in pizza['toppings']:
print("\t"+topping)
结果
you orderd athick-crust pizzawith the following toppings:
mushrooms
extra cheese
每当需要在字典中将一个键和多个值关联时,就可以在字典中嵌套一个列表
在字典中嵌套字典
users={
'wangyi':{
'first':'yi',
'last':'wang',
'location':'henan',
},
'yuxin':{
'first':'yuxin',
'last':'gan',
'location':'guizhou',
},
}
for user_name,user_info in users.items():
print("username:"+user_name)#输出第一个键即“wangyi”
full_name=user_info['last']+user_info['first']#把名字组合在一起
location=user_info['location']
print('\t'+"Full name:"+full_name.title())
print("\tLocation:"+location.title())
结果
username:wangyi
Full name:Wangyi
Location:Henan
username:yuxin
Full name:Ganyuxin
Location:Guizhou
每个字典内部结构可以不同,但是会更复杂一些

浙公网安备 33010602011771号