1.一个简单的字典
alien_0 = {'colors': 'green','points':5}
print(alien_0['colors'])
print(alien_0['points'])
2.使用字典
在Python中,字典是一系列键值对,每个键都与一个值相关联,你可以通过访问键来访问相关联的值。与键相关联的值可以是字符串、数字、列表、字典等等。
在Python中,字典用放在花括号({})里的一系列键值对表示。键值对是一系列相关联的值,指定键时,会返回相关的值。键与值之间用冒号(:)隔开,键值对之间用逗号(,)隔开。
2.1访问字典中的值
要获取与键相关的值,可以依次指定字典名和放在方括号里的键名。
alien_0 = {'colors': 'green','points':5}
new_points = aliens_0['points']
print(f"You just earnd {new_points} points!")
2.2添加键值对
字典是一种动态结构,可以随时在其中添加键值。要添加键值,可以依次指定字典名、用方括号括起来的键名以及相关联的值。
alien_0 = {'colors': 'green','points':5}
print(alien_0)
alien_0['x_poistions'] = 0
alien_0['y_poistions'] = 25
print(alien_0)
注意:字典中的排列顺序与定义是的顺序是一致的。
2.3先创建一个空字典
有时候,我们需要动态地在字典中不断添加键值对,这是,我们可以用花括号({})先创建一个空字典,再分行添加各个键值对。
alien_0 = {}
alien_0['colors'] = 'green'
alien_0['points'] = 5
print(alien_0)
2.4修改字典中的值
要修改字典中的值,可以依次指定字典名、用方括号括起来的键名以及要关联的新值。
alien_0{'colors':'green'}
alien_0['colors'] = 'yellow'
2.5删除键值对
对于字典中不需要的信息,我们可以使用del语句将相应的键值对彻底删除,使用del语句时,必须指定字典名和要删除的键。
alien_0 = {'colors': 'green','points':5}
del alien_0['colors']
注意:删除的键值会永远消失。
2.6由类似对象组成的字典
你可以使用字典来存储众多对象的同一种信息。当你确定要使用多行来定义字典时,要在输入的左花括号({)后按回车键另起一行,然后缩进4个空格,输入指定的第一个键值对,在其后面加一个逗号,在另起一行重复上述操作。最后,另起一行,输入右花括号(})即可。
favorite_languages = {
'jens': 'python',
'sarah': 'c',
'phil': 'python',
}
2.7使用get()来访问值
使用方法get()在指定的键不存在时,可以返回一个默认值。
方法get()的第一个参数用于指定键,必不可少,第二个参数为指定的键不存在时,要返回的值,是可选的,如果没有设定第二个参数,返回的是None。
alien_0 = {'colors': 'green','points':5}
point_value = alien_0.get('points','No point value.')
一般在指定的键可能不存在时,使用方法get()。
3.遍历字典
字典可用于多种方式的储存,因此有多种遍历方式,可遍历字典中的所有键值对、键或值。
3.1遍历所有的键值对
使用for循环可以遍历整个字典,需要使用方法items(),以及需要声明两个变量用于存储键值对中的键和值。
famliy ={
'first_name': 'Xu',
'age': '22',
'city': 'QingDao',
}
for key,value in famliy.items():
print(f"\nKey:{key}")
print(f"\nValue:{value}")
3.2遍历字典中的所有键
要遍历字典中的所有键时,方法keys()很有用
favorite_languages = {
'jens': 'python',
'sarah': 'c',
'phil': 'python',
}
friends = ['phil']
for name in favorite_languages.keys():
print(name.title())
if name in friends:
language = favorite_languages[name].title()
print('I see you')
方法key()并非只用于遍历,它返回的是一个列表,其中包含字典中的所有键。
3.3按特定顺序遍历字典中的所有键
要以特定的顺序返回元素,一种方法是在for循环对返回的键进行排序。因此,可以使用函数sorted()来获取以特定顺序排列的键列表的副本。
favorite_languages = {
'jens': 'python',
'sarah': 'c',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title())
3.4遍历字典中的所有值
如果对字典中的值很感兴趣,可以使用方法values()来返回一个值列表,不包含所有的键。
favorite_languages = {
'jens': 'python',
'sarah': 'c',
'phil': 'python',
}
for language in favorite_languages.values():
print(language.title())
字典中的值可能是重复项,所以,为剔除重复项,可以使用集合(set),集合中的每个元素都是独一无二的。
favorite_languages = {
'jens': 'python',
'sarah': 'c',
'phil': 'python',
}
for language in set(favorite_languages.values()):
print(language.title())
注意:可以使用花括号({})直接创建集合,并在其中用逗号分隔元素。
4.嵌套
4.1字典列表
创建一个列表,列表中的每个元素都代表一个字典,即在列表中嵌套字典。
alien_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)
如果列表中要包含的字典数有很多,可以使用以下方法,即先创建一个空列表,再利用.append()将值附加到列表末尾。
aliens=[]
for alien_number in range(30):
new_alien = {'color':'green','points':5,'speed':'slow'}
aliens.append(new_alien)
for alien in aliens[:5]:
print(alien)
print(f"Total number of aliens:{len(aliens)}")
当然,我们也可以使用for循环和if语句来修改列表中某些字典的值。
aliens=[]
for alien_number in range(30):
new_alien = {'color':'green','points':5,'speed':'slow'}
aliens.append(new_alien)
for alien in aliens[:3]:
if alien['color'] == 'green':
alien['color']='yellow'
alien['speed']='medium'
alien['point']=10
for alien in aliens[:5]:
print(alien)
print(f"Total number of aliens:{len(aliens)}")
4.2在字典中存储列表
有时,我们需要在字典中将一个键关联到多个值时,就可以考略在字典中嵌套列表。
pizza = {
'crust':'thick',
'toppings':['mushrooms','extra chesse'],
}
for topping in pizza['toppings']:
print("\t"+topping)
4.3在字典中嵌套字典
当我们需要在字典中嵌套字典是,代码可能变得复杂起来。
user = {
'Bod': {
'first':'albert',
'last':'einstein',
'location':'princetion',
}
}
for username,user_info in user.items():
print(f"\nUsername:{username}")
location=user_info['location']
print(f"\tLocation:{location.title()}")
注意:这样做时,一般要求用户具有相同的结构。