文章目录
字典
在python中,字典是一系列的键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何python对象用作字典的值。
字典用放在花括号中的一系列键-值对表示
alien={'color':'green','points':5}
键-值对是两个相关联的值,指定键时,python将返回与之相关联的值。键和值之间用冒号分割,而键-值对之间用逗号分隔。
访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号内的键
alien={'color':'green','points':5}
print(alien['color'])
添加键值对
要添加键值对,可依次指定字典名、用方括号括起来的键和后面加上(=)相关联的值。
alien={'color':'green','points':5}
print(alien)
alien['x_position']=0
alien['y_position']=25
print(alient)
python不关心键-值对的添加顺序,而只关心键和值之间的关联关系。
空字典
有时候,在空字典中添加键-值对是为了方便,而有时候必须这样做。
alien={}
使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常都需要先定义一个空字典。
修改字典中的值
修改字典中的值,可依次指定字典名,用方括号括起来的键以及该键相关联的新值。
alien={'color':'green'}
alien['color']='yellow'
删除键-值对
使用del语句,必须指定字典名和要删除的键
alien={'color':'green','points':5}
print(alien)
del alien["points"]
print(alien)
注意:del永久删除键值对
由类似对象组成的字典
在前面的示例中,字典存储的是一个对象的多种信息,(游戏中的一个外星人的多种信息)也可以使用字典来存储众多对象的同一种信息。假如,要调查多人,问他们喜欢的语言。
favorite_languages={
'tom':'c',
'jack':'python',
'jaey':'java',
}
最后一个右花括号,缩进四个空格,使其与字典中的键对齐。
另外一个不错的做法是在最后一个键-值对后面也加上逗号,为以后在下一行添加键-值对做准备。
遍历字典
要编写用于遍历字典的for循环。第一部分可声明两个变量,用于存储键-值对中的键和值。对于这两个变量,可以使用任意名称
favorite_languages={
'tom':'c',
'jack':'python',
'jaey':'java',
}
for key,value in fauorite_languages.items():
print("\nKey"+key)
print("value"+value)
for 语句的第二部分包含字典名和方法items(),它返回一个键-值对列表。for循环依次将每个键-值对存储到指定的两个变量中。
注意:即使遍历字典时,键-值对的返回顺序也与存储顺序不同,python不关心键值对的存储顺序,而只跟踪键和值之间的关联关系。
遍历字典中所有的键
不需要使用字典中的值时,方法keys()很有用。
favorite_languages={
'tom':'c',
'jack':'python',
'jaey':'java',
}
for name in favorite_languages.keys():
print(name.title())
可以省略.keys(),结果不变,遍历字典时,默认遍历所有的键
if ‘tim’ not in favorite_languages.keys():
print("sorry")
方法keys()并非只能用于遍历;它返回一个列表,可以使用not in比较,看里面是否包含tim,没包含则输出
遍历字典中的所有值
可以使用方法values(),它返回一个值列表,而不包含任何键。
favorite_languages={
'tom':'c',
'jack':'python',
'jaey':'java',
}
for zhi in favorite_languages.values():
print(zhi.title())
for语句提取字典中的每个值,并将它们依次存储到变量zhi中。
这个提取没有考虑到值是否重复,如果列表中的键值对很对,包含很多重复的值,为了剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须时独一无二的。
favorite_languages={
'tom':'c',
'jack':'python',
'jaey':'java',
'tim':'python',
}
for zhi in set(favorite_languages.values()):
print(zhi.title())
通过对重复元素的列表调用set(),可让python找出列表中独一无二的元素,并使用这些元素来创建一个集合。
按顺序遍历字典中的所有键
字典总是明确地记录键和值之间地关联关系,但获取字典地元素时,获取顺序是不可预测地。
要以首字母地特定地顺序返回元素,一种办法是在for循环中对返回地键进行排序。可使用函数sorted()。
favorite_languages={
'tom':'c',
'jack':'python',
'jaey':'java',
'tim':'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title())
嵌套
在列表中存储字典
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,或将字典存储在字典中,这称为嵌套。
xiaoming={'xing':'xiao','age':'18'}
lining={'xing':'li','age':'22'}
aliens=[xiaoming,lining]
for alien in aliens:
print(alien)
在字典中存储列表
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
favorite_languages={
'tom':['c','python',java],
'jack':['python','ruby']
'jaey':'java',
'tim':'python',
}
for name,languages in favorite_languages.items():
print("\n"+str(name))
for language in languages:
print("\t"+language)
在字典中存储字典
user={
'huangxiaoming':{
'first':'huang',
'last':'xiao',
'location':'shanghai',
},
'chenglong':{
'first':'cheng',
'last':'long',
'location':'beijing',
},
}
for username,user_info in user.items():
print("\nUsername: "+username)
full_name=user_info['first']+" "+user_info['last']
location=user_info['location']
print(full_name)
print(location)