by 《Python编程从入门到实践》
二、关于字典
(12)字典的基本操作
包括创建、添加、访问、修改、删除等等
num = {}
num[1] = 'one'
num[2] = 'two'
num[3] = 'three'
num[4] = 'four'
num[5] = 'five'
print(num)
print(num[3])
num['a'] = 'after'
num['b'] = 'boy'
num['c'] = 'cat'
num['d'] = 'dog'
num['e'] = 'egg'
print(num)
print(num['c'])
运行结果
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’}
three
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, ‘a’: ‘after’, ‘b’: ‘boy’, ‘c’: ‘cat’, ‘d’: ‘dog’, ‘e’: ‘egg’}
cat
有的时候键-值的排列顺序与添加顺序不同,Python不关心键-值对应的添加顺序,而只关心键和值之间的关联关系。
书上是这样写的,并且以x_position和y_position两个变量添加为例(P83)。实际运行中未发现——见上例。
#继续使用上面的字典num
print('原来的字典:',end='')
print(num)
num['a'] = 'among'
num['b'] = 'basketball'
num['c'] = 'clean'
del num['d']
del num['e']
del num[1]
del num[2]
del num[3]
del num[4]
del num[5]
print('新的字典:',end='')
print(num)
运行结果
原来的字典:{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’, 5: ‘five’, ‘a’: ‘after’, ‘b’: ‘boy’, ‘c’: ‘cat’, ‘d’: ‘dog’, ‘e’: ‘egg’}
新的字典:{‘a’: ‘among’, ‘b’: ‘basketball’, ‘c’: ‘clean’}
(13)字典的遍历
遍历字典所有信息、遍历键、遍历值
#先声明一个字典
love_language = {
'allen':'python',
'bob':'c',
'clair':'java',
'david':'python',
'fros':'c++'
}
#遍历字典,key-value这两个变量可以随意命名,用以储存.items()方法返回的键-值对列表
for key, value in love_language.items():
print("\nKey: " + key)
print("Value: " + value)
运行结果
Key: allen
Value: python
Key: bob
Value: c
Key: clair
Value: java
Key: david
Value: python
Key: fros
Value: c++
Python 不关心键-值对的存储顺序,而只跟踪键和值之间的关联关系。
输出的顺序可能与存储顺序不同。
for name, language in love_language.items():
print(name.title() + "'s favorite language is " + language.title() +".")
遍历所有键和值
#遍历键
for name in love_language.keys():
print(name.title())
#遍历值
for language in love_language.values():
print(language.title())
(1)遍历字典时,会默认遍历所有的键,因此如果将上述遍历键的代码替换为 for name in love_language: (省略了.keys())输出结果也将不变。但是显示地使用方法keys()会让代码更容易理解。
(2)方法keys()并非只能用于遍历;实际上它返回一个列表,其中包含字典中的所有键。同理,方法values返回一个值列表。
(3)按顺序遍历键、剔除值的重复见下:
#如果想按顺序遍历字典中的所有键
for name in sorted(love_language.keys()):
#如果想剔除值列表中的重复值,可以使用集合set——每个元素都是独一无二的
for language in set(love_language.values()):
其它的一些代码举例:
love_language = {
'allen':'python',
'bob':'c',
'clair':'java',
'david':'python',
'fros':'c++'
}
friends = ['allen','clair']
for name in love_language.keys():
print(name.title())
if name in friends:
print("hello my friends! You love " + love_language[name].title() +".")
运行结果
Allen
Hello my friends! You love Python.
Bob
Clair
Hello my friends! You love Java.
David
Fros
love_language = {
'allen':'python',
'bob':'c',
'clair':'java',
'david':'python',
'fros':'c++'
}
name = 'jack'
if name not in love_language.keys():
print(name.title() + ", I don't konw what language you love!")
运行结果
Jack, I don’t konw what language you love!
(14)字典列表
创建一个包含三个字典的列表
alien_0 = {'color':'red','points':5}
alien_1 = {'color':'green','points':10}
alien_2 = {'color':'red','points':15}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
print(alien['color'])
#也可以先创建空列表再添加字典
cats = []
for i in range(10):
new_cat = {'color':'orange','speed':'fast'}
cats.append(new_cat)
for cat in cats:
print(cat)
(15)在字典中存储列表
#在字典中存储列表
love_language = {
'allen':['python','ruby'],
'bob':['c'],
'phil':['python','java','go']
}
for name,languages in love_language.items():
if len(languages) > 1:
print(name.title() + " love many languages: ")
for language in languages:
print("\t" + language.title())
print()
else:
print(name.title() + " love only one language: " + languages[0].title())
print()
运行结果
Allen love many languages:
Python
Ruby
Bob love only one language: C
Phil love many languages:
Python
Java
Go
(16)在字典中存储字典
可在字典中嵌套字典,例如如果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。
#在字典中存储字典
users = {
'allen':{
'first':'allen',
'last':'walker',
'location':'princeton'
},
'bob':{
'first':'bob',
'last':'winster',
'location':'paris'
}
}
for name,user_info in users.items():
print("username: " + name.title())
print("full name: " + user_info['first'].title() +' '+ user_info['last'].title())
print("location: " + user_info['location'].title())
print()
运行结果
username: Allen
full name: Allen Walker
location: Princeton
username: Bob
full name: Bob Winster
location: Paris