这两天学习特别累,不是学不会的那种累,是动脑子学习的那种累,今天走在西工大的天桥上,突然呼吸急促,感觉自己要挂了似的,想想还是最近休息不好,压力太大导致的,清明节好好休息下。。。
记博客还是有用的,每次不想学习的时候,总会想:不学习就没有笔记,没有笔记就不能上传博客,虽然没人看,但总感觉有很多很多人在监督我,只得好好学习。
书这东西,每读一遍,理解都不一样
看书这事儿,还得有纸质书,读书、笔记、翻查还是很有用的,电子书就差那么点意思!
6.3 遍历字典
6.3.1 遍历所有键-值对(方法items())
首先,要声明2个变量,目的:处处存储键-值对中的键和值;
其次,这两个变量可以使用任意名称。
eg1:
user_0 = {
'username':'efermi',
'firstname':'enrico',
'last':'fermi',
}
for key,value in user_0.items(): #变量可随意命名,字典名称后面加上方法.item()
print(key)
print(value)
op:
Key: username
Value: efermi
Key: firstname
Value: enrico
Key: last
Value: fermi
注意:即便遍历字典时,键—值对的返回顺序也与存储顺序不同。
Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。
eg:
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())
op:
Jen's favorite language is Python
Sarah's favorite language is C
Edward's favorite language is Ruby
Phil's favorite language is Python
注意:变量的取名如果能和键值对应会方便代码阅读!
6.3.2 遍历字典中的所有键(方法keys())
在不需要使用字典中的值时,方法keys()很有用。
eg:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name.title())
op:
Jen
Sarah
Edward
Phil
注意:1. 遍历字典时,会默认遍历所有的键;
即将for name in favorite_ languages.keys():
替换为for name in favorite_languages:
结果不变!!!
2. 使用方法keys()可让代码更容易理解,你可以选择这样做,也可 省略它。
情景1:在上面eg的基础上,使用当前键来访问与之相关联的值,并且打印消息,指出两位朋友喜欢的语言。
eg:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
friends = ['sarah','phil']
for name in favorite_languages.keys():
if name not in friends:
print(name.title())
else:
print(name.title())
print(name.title() + " 's favorite language is " + favorite_languages[name].title())
# 这是根据情景写的,对比书上的程序,略显麻烦
#friends = ['phil', 'sarah']
#for name in favorite_languages.keys():
# print(name.title())
# if name in friends:
# print(name.title() + " 's favorite language is " + favorite_languages[name].title())
# 代码要简单可读!!!
op:
Jen
Sarah
Sarah 's favorite language is C
Edward
Phil
Phil 's favorite language is Python
6.3.3 按顺序遍历字典中的所有键(sortrd())
字典只明确记录键值间的关系,但获取字典的元素时,获取顺序是不可预测的。
eg:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title())
op:
Edward
Jen
Phil
Sarah
6.3.4 遍历字典中的所有值(方法values())
eg:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for language in sorted(favorite_languages.values()):
print(language.title())
op:
C
Python
Python
Ruby
注意:从输出的结果可以看到有重复值,可以使用集合(set)剔除重复值。
如改成for language in set(sorted(favorite_languages.values())):
则输出为:
C
Python
Ruby
练习:
6.4
wordmeaning = {
'list': 'changeble',
'tuple': 'unchangeble',
'sort': 'forever orderable',
'len': 'longth',
'index': 'adress'
}
for word, meaning in wordmeaning.items():
print("\n" + word)
print(meaning)
wordmeaning['range'] = 'numbers'
wordmeaning['max'] = 'maxium'
print(wordmeaning)
6.5
river_country = {
'changjiang':'china',
'yamazon': 'brazil',
'nile': 'egypt',
}
for river, country in river_country.items():
print("The " + river.title() + " runs through " + country.title())
for river in river_country.keys():
print(river)
for country in river_country.values():
print(country)
6.6
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
names = ['chandler','sarah','rose']
for somebody in favorite_languages.keys():
print(somebody + ", thanks !")
if somebody in names:
print(somebody.title() + ", Please join the check !")