1.在Python中,字字典典 是一系列键—值值对对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将 任何Python对象用作字典中的值。 在Python中,字典用放在花括号{} 中的一系列键—值对表示,
alien_0 = {'color': 'green', 'points': 5}
键—值 对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。 最简单的字典只有一个键—值对.
要获取与键相关联的值,可依次指定字典名和放在方括号内的键,
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)
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
有时候,在空字典中添加键—值对是为了方便,而有时候必须这样做。为此,可先使用一对空的花括号定义一个字典,再分行添加各个键—值对。
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow' print("The alien is now " + alien_0['color'] + ".")
对于字典中不再需要的信息,可使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
favorite_languages = {'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python'
}
print(favorite_languages)
一个Python字典可能只包含几个键—值对,也可能包含数百万个键—值对。鉴于字典可能包含大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息,因此有多种 遍历字典的方式:可遍历字典的所有键—值对、键或值。
user_0 = {'username': 'efermi', 'first': 'enrico', 'last': 'fermi'}
❶for key, value in user_0.items():
❷print("\nKey: " + key)
❸print("Value: " + value)
for 语句的第二部分包含字典名和方法items() (见❶),它返回一个键—值对列表。接下来,for 循环依次将每个键—值对存储到指定的两个变量中。在前面的示例中,我 们使用这两个变量来打印每个键(见❷)及其相关联的值(见❸)。第一条print 语句中的"\n" 确保在输出每个键—值对前都插入一个空行
字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常你想要的只是获取与键相关联的正确的值。 要以特定的顺序返回元素,一种办法是在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.
如果你感兴趣的主要是字典包含的值,可使用方法values() ,它返回一个值列表,而不包含任何键。例如,如果我们想获得一个这样的列表,即其中只包含被调查者选择的各 种语言,而不包含被调查者的名字,可以这样做:
favorite_languages = {'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', }
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())
The following languages have been mentioned:
Python
C
Ruby
Python
for language in sorted(favorite_languages.values()):
print(language.title())
C
Python
Python
Ruby
通过对包含重复元素的列表调用set() ,可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。在❶处,我们使用了set() 来提 取favorite_languages.values() 中不同的语言。
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)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
for alien in aliens[:5]:
print(alien)