Python入门之字典
使用字典
在Python中,字典是一系列键-值对。每个键都与一个值相关联,可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
在Python中,字典用方在花括号{}
中的一系列-键值对表示。
alien_0 = {'color': 'green', 'points': 5}
最简单的字典只有一个键-值对。
alien_0 = {'color': 'green'}
访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号内的键。
alien_0 = {'color': 'green'}
print(alien_0['color'])
添加键-值对
字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名、用方括号括起的键和相关联的值。
alien_0 = {'color': 'green', 'points': 5}
print(alien_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(alien_0)
修改字典中的值
alien_0 = {'color': 'green'}
print(alien_0)
alien_0['color'] = 'yellow'
print(alien_0)
删除键-值对
对字典中不需要使用的信息,可以使用del语句将相应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
遍历字典
遍历所有键-值对
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
print("\nKey: " + key)
print("Value: " + value)
方法items()
,它返回一个键-值对列表。
注意:遍历字典时,键-值对返回顺序也与储存顺序不同。Python不关心键-值对的储存顺序,而只跟踪键和值之间的关系联系。
遍历字典中所有的键
在不需要使用字典中的值时,方法keys()
很有用。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python'
}
for name in favorite_languages.keys():
print(name.title())
方法keys()
并非只能用于遍历,实际上,它返回一个列表,其中包含字典中的所有键。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python'
}
if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")
按顺序遍历字典中的所有键
获取字典元素时,获取顺序是不可预测的,这不是问题,因为通常你想要的只是获取与键相关联的正确的值。
要以特定的顺序返回元素,一种办法是在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.")
遍历字典中的所有值
如果你感兴趣的主要是字典中包含的值,可使用方法values()
,它返回一个值列表,而不包含任何键。这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,也许不是问题,但是如果很多呢?为剔除重复项,可使用集合(set
),集合类似于列表,但每个元素都必须时独一无二的。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python'
}
for language in set(favorite_languages.values()):
print(language.title())
嵌套
有时候,需要将一系列字典储存在列表中,或将列表作为值储存在字典中,这称为嵌套。
字典列表
列表中嵌套字典:
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)
在字典中储存列表
有时候,需要将列表储存在字典中,而不是将字典储存在列表中。
pizza = {
'crust': 'thick',
'toppings': ['mushrooms', 'extra cheese'],
}
在字典中储存字典
可以在字典中嵌套字典,但这样做时,代码可能很快复杂起来。