1.字典
在Python中,字典是一系列键值对,每个键都与一个值相关联,你可以使用键来访问与之相关联的值。
键值对是两个相关联的值,指定键时,Python将返回与之相关联的值。以下是一个简单的字典:
alien = {'color':'red','point':5}
print(alien['color'])
print(alien['point'])
1.1添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对只需要先指定字典名,方括号括来的键和相关联的值。
alien = {'color':'red','point':5}
alien['x'] = 0
alien['y'] = 15
print(alien)
1.2.修改字典中的值
要修改字典中的值,可以指定字典名,方括号括来的键和相关联的值以及与该键相关联的新值。
alien = {'color':'red','point':5}
print(alien['color'])
alien['color'] = 'green'
print(alien['color'])
这里举一个例子,表示对能够以不同速度行驶的汽车进行追踪:
car = {'x':0,'y':2,'speed':'fast'}
print("Original x:" + str(car['x']))
if car['speed'] == 'slow':
x_increment = 1
elif car['speed'] == 'medium':
x_increment = 2
else:
x_increment = 3
car['x']=car['x'] + x_increment
print("Now your x is:" + str(car['x']))
我们先定义一辆汽车,以及它的x,y坐标和速度,还添加了x的初始值,并用if-elif-else结构来确定移动距离,并将值存储在x——increment中。
1.3.删除键值对
使用del语句。
car = {'x':0,'y':2,'speed':'fast'}
print(car)
del car['x']
print(car)
2.遍历字典
2.1遍历所有键值对
使用for循环以及items()方法,这个方法会一个键值对列表。但是即使遍历字典,Python也不会按照存储顺序来返回,它并不关心键值对的存储关系,只关注键和值之间的关联关系。
user = {'username':'efermi','first':'enrico','last':'fermi'}
for key,value in user.items():
print("\nKey:" + key)
print("Value:" + value)
2.2遍历键
使用方法key()。遍历时会默认遍历所有的键。
user = {'username':'efermi','first':'enrico','last':'fermi'}
for key in user.keys():
print(key.title())
2.3按顺序遍历所有的键
在for循环中对返回的键进行排序,使用sorted()方法来获得按特定顺序排列的键列表的副本。
user = {'d':'efermi','s':'enrico','v':'fermi'}
for name in sorted(user.keys()):
print(name.title())
2.4遍历所有的值
对包含重复元素的列表调用set(),可以让Python找出列表中独一无二的元素,并创建一个集合。
user = {'d':'efermi','s':'enrico','v':'fermi','c':'efermi'}
for name in set(user.values()):
print(name.title())
3.嵌套
3.1字典列表
使用range()方法生成多个字典,而且每个字典中都有键值对。
cars = []
for car_number in range(30):
new_car = {'color':'red','speed':'slow'}
cars.append(new_car)
for car in cars[:5]:
print(car)
print("...")
print("Total number of cars:" + str(len(cars)))
3.2在字典中存储列表
当需要在字典中将一个键关联到多个值时,可以在字典中嵌套一个列表。
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())
如以上例子,现在与每一个名字相关联的值都是一个列表,我们使用变量languages来依次存储字典中的每个值;在遍历的主循环中我们有使用了一个for循环来遍历每个人喜欢的语言列表。
3.3在字典中存储字典
users = {'aeinstein':
{'first':'albert','last':'einstein','location':'princeton'},
'murie':{'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())