字典
字典涉及
一、如何访问和修改字典中的信息,
二、如何遍历字典中的数据,
三、存储字典的列表、存储列表的字典、存储字典的字典。
字典是一系列键-值对,可以使用键来访问与之向关联的值。
与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何Python对象用作字典的值。
一.基本操作
1.访问字典的值
依次指定字典名和放在方括号内的键。
alien_0={'color':'green','points':5}
new_points=alien_0['points']
print('You just earned ' + str(new_points) + ' points!')
You just earned 5 points!
2.添加键-值对
alien_0={'color':'green','points':5}
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
键-值对的排列顺序与添加顺序不同。
3.先创建一个空字典
alien_0={}
alien_0['color']='green'
alien_0['points']=5
print(alien_0)
{'color': 'green', 'points': 5}
先创建一个空字典,用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时。
4.修改字典的值
修改字典的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。
alien_0={}
alien_0['color']='green'
alien_0['points']=5
print(alien_0)
alien_0['color']='yellow'
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 5}
5.删除键-值对
对于字典中不需要的信息,可以用**del()**语句将相应的键-值对彻底删除。
使用del语句时,必须指定字典名和要删除的键。
alien_0={}
alien_0['color']='green'
alien_0['points']=5
print(alien_0)
del alien_0['points']
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green'}
6.由类似对象组成的字典
favorite_languages = { 'jen':'python', 'sarah':'c', 'edward':'ruby', 'phil':'python' }
print("Sarah's favorite language is " + favorite_languages['sarah'].title() + ".")
Sarah's favorite language is C.
二.遍历字典
遍历字典的方式有:可遍历字典所有的键-值对、键或值。
1.遍历所有的键-值对dict.items()
dict.items()返回一个列表,其中包含字典中的所有键-值对。
favorite_languages = { 'jen':'python', 'sarah':'c', 'edward':'ruby', 'phil':'python' }
print(favorite_languages.items())
for name,language in favorite_languages.items():
print(name.title() + "'s favorite language is " + language.title() + ".")
dict_items([('jen', 'python'), ('sarah', 'c'), ('edward', 'ruby'), ('phil', 'python')])
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.
遍历字典时,键-值对的返回顺序也与存储顺序不一定相同。
2.遍历字典的所有键dict.keys()
提取字典的所有键:dict.keys(),返回一个列表,其中包含字典的所有键。
favorite_languages = { 'jen':'python', 'sarah':'c', 'edward':'ruby', 'phil':'python' }
print(favorite_languages.keys())
#for name in favorite_languages.keys():
for name in favorite_languages:
print(name.title())
dict_keys(['jen', 'sarah', 'edward', 'phil'])
Jen
Sarah
Edward
Phil
遍历字典时,会默认遍历所有的键。
所以上述代码的for name in favorite_languages.keys():换成for name in favorite.languages:,输出将不变。
3.按顺序遍历字典中的所有键
字典总是明确记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。
要以特定的顺序返回元素,一种办法是在for循环中对返回的键排序。
可以用sorted()来获取按特定顺序排列的键列表的副本。
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.")
Edward,thank you for taking the poll.
Jen,thank you for taking the poll.
Phil,thank you for taking the poll.
Sarah,thank you for taking the poll.
4.遍历字典中的所有值dict.values()
它返回一个值列表,而不包含任何键。
favorite_languages = { 'jen':'python', 'sarah':'c', 'edward':'ruby', 'phil':'python' }
for language in set(favorite_languages.values()):
print(language.title())
C
Python
Ruby
为剔除重复项,可使用集合set。
对包含重复元素的列表调用set(),返回一个新的列表,可让Python找出独一无二的元素。
三.嵌套
将一系列字典存储在列表中,或者将列表作为值存储在字典中,这称为嵌套。
1.字典列表
aliens=[]
for alien_number in range(0,30):
new_alien={'color':'green','points':5,'speed':'slow'}
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("......")
{'color': 'yellow', 'points': '10', 'speed': 'medium'}
{'color': 'yellow', 'points': '10', 'speed': 'medium'}
{'color': 'yellow', 'points': '10', 'speed': 'medium'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
......
aliens是一个列表,里面是30个外星人字典。
2.在字典中存储列表
字典的值为列表。
每当需要在字典将一个键关联到多个值时,都可以在字典中嵌套一个列表。
favorite_languages = {'jen':['python','ruby'],'sarah':['c'],'edward':['ruby','go'],'phil':['python','haskell']}
for name,languages in favorite_languages.items():
print(name.title() + "'s favorite languages are:")
for language in languages:
print('\t' + language.title())
Jen's favorite languages are:
Python
Ruby
Sarah's favorite languages are:
C
Edward's favorite languages are:
Ruby
Go
Phil's favorite languages are:
Python
Haskell
变量languages依次存储字典中的每个值,这些值都是列表。
3.在字典中存储字典
字典的值为字典。
users={
'aeinstein':{'first':'albert','last':'einstein','location':'princeton'},
'mcurie':{'first':'marie','last':'curie','location':'paris'}
}
for username,user_info in users.items():
print('Username: ' + username.title())
full_name=user_info['first'] + " " + user_info['last']
location=user_info['location']
print('\tFull name: ' + full_name.title()) print('\tLocation: ' + location.title())
Username: Aeinstein
Full name: Albert Einstein
Location: Princeton
Username: Mcurie
Full name: Marie Curie
Location: Paris
表示每位用户的字典的结构都相同。