<u>字典相当于java中的Map集合(以键值对的形式存放数据)</u>
健:一般是字符串居多。值:数字、字符串、列表、字典本身、任何Python对象。
alien_0 = {'color':'green','points':s}
alien_1 = {'color':'red'}
在字典中,你想存储多少个键—值对都可以。最简单的字典只有一个键—值对
5.1 使用字典
5.1.1 访问字典中的值——(依次指定字典名和放在方括号内的键)
alien_0 = {'color': 'green','points':s}
print(alien_0['color'])
#输出结果:green
new_points = alien_0['points']
print("You just earned " + str(new_points) + " points!")
str()将整个整数转化为字符串。
5.1.2 添加键-值对
字典是一种动态结构。
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}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}
注意:Python不关心键—值对的添加顺序, 而只关心键和值之间的关联关系。
5.1.3 先创建一个空字典
可先使用一对 空的花括号定义一个字典,再分行添加各个键—值对
alien_0 = {} #定义一个空字典
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
#结果:
{'color': 'green', 'points': 5}
5.1.4 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")
#结果:
The alien is green.
The alien is now yellow.
5.1.5 删除键-值对
使用del语句删除,且必须指定<u>字典名</u>和<u>要删除的键</u>(与键对应的值也一并删除)
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
#结果:
{'color': 'green', 'points': 5}
{'color': 'green'}
5.1.6 由类似对象组成的字典(格式)
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
确定需要使用多行来定义字典时,在输入左花括号后按回车 键,再在下一行缩进四个空格,指定第一个键—值对,并在它后面加上一个逗号。定义好字典后,在最后一个键—值对的下一行添加一个右花括号,并缩进四个空格,使其与 字典中的键对齐。
是在最后一个键—值对后面也加上逗号,为以后在下一行 添加键—值对做好准备。
5.2 遍历字典
5.2.1 遍历所有的键值对
运用for循环:for k, v in user_0.items() ,其中的k,v都是随意命名,但最好要见名知意。
注意:即便遍历字典时,键—值对的返回顺序也与存储顺序不同。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name, language in favorite_languages.items():
print(name.title() + "'s favorite language is " +
language.title() + ".")
#结果:
Jen's favorite language is Python.
Sarah's favorite language is C.
Phil's favorite language is Python.
Edward's favorite language is Ruby.
5.2.2 遍历字典中的所有键--keys()
#1.
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
friends = ['phil', 'sarah']
for name in favorite_languages.keys():
print(name.title())
if name in friends:
print(" Hi " + name.title() +
", I see your favorite language is " +
favorite_languages[name].title() + "!")
#输出结果:
Edward
Phil
Hi Phil, I see your favorite language is Python!
Sarah
Hi Sarah, I see your favorite language is C!
Jen
#2.
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")
#输出结果:
Erin, please take our poll!
5.2.3 按顺序遍历字典中的所有键
要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此,可使用函
数sorted()来获得按特定顺序排列的键列表的副本。
注意:<u>这里的顺序并不是按照字典里的顺序,而是按照字典里键的字母顺序。</u>
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.
5.2.4 遍历字典中的所有值--values()
返回一个值列表,但不包含任何键。
#1.提取字典中所有的值,而没有考虑是否重复
for language in favorite_languages.values():
print(language.title())
#结果:
Python
C
Python
Ruby
#2.为剔除重复项,可使用集合(set)
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
print(language.title())
#结果:
The following languages have been mentioned:
Python
C
Ruby
5.3 嵌套
5.3.1 在列表中存储字典
问题:字典alien_0包含一个外星人的各种信息,但无法存储第二个外星人的信息,更别说屏幕上
全部外星人的信息了。如何管理成群结队的外星人呢?
解决办法:是创建一个外星人列表,其中每 个外星人都是一个字典,包含有关该外星人的各种信息
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}
5.3.2 在字典中存储列表
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表
example:一个人可以喜欢多种语言
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print("\n" + 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
Phil's favorite languages are:
Python
Haskell
Edward's favorite languages are:
Ruby
Go
5.3.3 字典中存储字典
example:用户字典里存储每一位用户,每位用户的信息包含其各种字典信息
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())
#结果:
Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie
Full name: Marie Curie
Location: Paris
网友评论