时间:2018/04/26
主要内容:6.字典
字典
一个简单的字典
alien_0={'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])
使用字典
在Python中,字典是一系列键-值对,每个键都与一个值相关联,你可以使用键来访问相关联的值。可以将任何Python对象用作字典中的值。
在Python中,字典用放在{}中的一系列键-值对来表示。键-值对是两个相关联的值。制定键时,Python将返回与之关联的值。键和值之间用冒号分隔。
访问字典中的值
alien_0={'color':'green','points':5}
new_points=alien_0['points']
print ('You just earned '+str(new_points)+' points!')
添加键-值对
alien_0={'color':'green','points':5}
print(aline_0)
#添加键-值对
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)#键-值对的排列顺序并不一定与添加顺序相同
先创建一个空字典
#使用字典来储存用户提供的数据或在编写能自动生成大量键-值对的代码时,通常需要先定义一个空字典。
alien_0={}
alien_0['color']='green'
alien_0['points']=5
print(aline_0)
修改字典中的值
#将字典中外星人的颜色修该为黄色
alien_0={'color':'green'}
print('The alien is '+alien_0['color']+'.')
alien_0['color']='yellow'
print('The alien is '+alien_0['color']+'.')
alien_0={'x_position':0,'y_position':25,'speed':'medium'}
print('Original x_position: '+str(alien_0['x_position']))
#向右移动外星人
#根据外星人的当前速度决定将其移动多远
if alien_0['speed']=='slow':
x_increment=1
elif alien_0['speed']=='medium':
x_increment=2
elif alien_0['speed']=='high':
x_increment=3
#新位置等于老位置加增量
alien_0['x_position']=alien_0['x_position']+x_increment
print('New x_position: '+str(alien_0['x_position']))
删除键-值对
alien_0={'x_position':0,'y_position':25,'speed':'medium'}
print(alien_0)
#使用del语句删除speed
del alien_0['speed']
print(alien_0)
由类似对象组成的字典
字典除了储存一个对象的多种信息外,也可以用来储存众多对象的同一信息。
favorite_language={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
print('Sarah\'s favorite language is '+
favorite_language['sarah'].title()+
'.'
)
遍历字典
遍历所有的键-值对
利用for循环遍历字典: for key,value in the d.items():
favorite_language={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
#该处的代码让python遍历字典favorite_language中的每个键值对,并将键储存在name变量中,将值储存在language变量中
for name,language in favorite_language.items():
print(name.title()+
'\'s favorite language is '+
language.title()+
'.'
)
遍历字典中的所有键
在不需要使用字典中的值时,方法keys()很有用。
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
#该处的代码让python遍历字典favorite_language中的每个键并将键储存在name变量中,将值储存在language变量中
for name in favorite_languages.keys():
print(name.title())
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
friends=['phil','sarah']
#遍历字典时,会默认遍历所有的键,所以可以省略后面的方法。keys()
for name in favorite_languages:
print(name.title())
if name in friends:
print(' Hi '+name.title()+
',I see your favorite_language is '+
favorite_languages[name].title()+
'!'
)
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
friends=['phil','sarah']
#还可以通过keys()来检查键是否在字典中
if 'erin' not in favorite_languages.keys():
print('Erin,please take our poll!')
按顺序遍历字典中的所有键
使用函数sorted()来获得按特定顺序排列的键列表的副本,再使用for循环。
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
for name in sorted(favorite_languages.keys()):
print(name.title()+',thank you for taking the poll!')
遍历字典中的所有值
使用方法value.()
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
print('The following languages have been mentionged: ')
for language in favorite_languages.values():
print(language.title())
#为了剔除重复项,可使用集合(set),集合类似于列表,但是集合中的每个元素必须是独一无二的。
favorite_languages={
'jen':'python',
'sarah':'c',
'edward':'ruby',
'phil':'python'
}
print('The following languages have been mentionged: ')
for language in set(favorite_languages.values()):
print(language.title())
嵌套
有时候需要将一系列字典存储在列表中,或者将列表作为值储存在字典中,这成为嵌套。
字典列表
#创建包含三个外星人的列表
alien_0={'color':'green','point':5}
alien_1={'color':'yellow','point':10}
alien_2={'color':'red','point':15}
aliens=[alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
实际情况中,外星人不止3个且每个外星人都是代码自动生成的:
#创建一个用于储存外星人的空列表
aliens=[]
#创建30个绿色的外星人
for alien_number in range(30):
new_alien={'color':'green','points':5,'speed':'slow'}
aliens.append(new_alien)
#显示前5个外星人
for alien in aliens[:5]:
print(alien)
#显示创建了多少外星人
print('Total number of aliens: '+
str(len(aliens)))
!for ...in range()
修改前3个外星人为黄色
#创建一个用于储存外星人的空列表
aliens=[]
#创建30个绿色的外星人
for alien_number in range(30):
new_alien={'color':'green','points':5,'speed':'slow'}
aliens.append(new_alien)
#修改前3个外星人为黄色
for alien in aliens[0:3]:
if alien['color']=='green':
alien['color']='yellow'
alien['speed']='medium'
alien['points']=10
#显示前5个外星人
for alien in aliens[:5]:
print(alien)
#显示创建了多少外星人
print('Total number of aliens: '+
str(len(aliens)))
在字典中储存列表
#储存所点的披萨的信息
pizza={
'crust':'thick',
'toppings':['mushrooms','extra cheese']
}
#概述所点的披萨
print('Your ordered a '+pizza['crust']+'-crust pizza with the following toppings:')
for topping in pizza['toppings']:
print('\t'+topping)
在字典中储存字典
users={
'aeinstein':{
'first':'albert',
'last':'einstein',
'location':'princeton',
},
'mcurie':{
'first':'marie',
'last':'curie',
'location':'paris',
},
}
for username,user_info in users.items():
print('\nUsername: '+username)
full_name=user_info['first']+' '+user_info['last']
location=user_info['location']
print ('\tFull name: '+full_name.title())
print ('\tLocation: '+location.title())
!该例子中因为每位用户字典结构都相同因而看起来处理较为简单,倘若表示每位用户的字典都包含不同的键,for循环的内部代码将会更加复杂。