前言
字典,跟列表一样,是python中极为重要的组成部分,应用十分广泛,它使用灵活,可储存的信息几乎不受任何限制,因此我们可以用字典实现许多功能。
一、字典
字典实质上就是一些列键值对,每一个键都与特定的值对应,与键相关的值可以是数字,可以是字符串,也可以是列表,更可以是另一个字典。
1.字典
字典用放在花括号里的键值对表示,键值对是两个相关联的量,指定键时,python会返回相对应的值,键与值之间用冒号分割,键值对之间用逗号分割。
访问字典中的值:要获取字典中的与键相关的值,我们可以依次指定字典名和放在方括号里的键。
添加键值对:要添加键值对,只需要指定字典名、用方括号括起来的key和相关联的value。
修改字典中的值:只需要指定字典名、用方括号括起来的key和相关联的新的value。
删除键值对:可以用del 语句删除相应的键值对,需要指定字典名个对应的键。
字典不仅可以用来储存一个人身上的不同信息,也可以用来储存不同人之间类似的特征等等,可见字典储存的信息十分灵活,不受限制。
2.遍历字典
注意:字典不同于列表,列表中的元素是有顺序的,而字典中的键值对是没有顺序的,在遍历字典时,键值对的出现是随机的。
可以用for循环遍历整个字典,与之前不同的是,for循环中需要定义两个变量:一个是key,另一个是value。而且对于字典需要用item()函数,这个函数会返回键值对的列表。
遍历字典中的键:不需要字典中的值的时候,key()函数很有用,它是用来返回字典中的键的,返回的是一个列表,其实,遍历字典时,会默认遍历字典中的键,所以有没有这个函数其实无所谓,但可以让代码简单易读。若想要按顺序遍历字典中所有的键,可以用之前学过的sorted()函数。
遍历字典中的值:可以使用value()函数,它返回的时一个值的列表,不包含任何键。若是值有重复的,可以使用set(),这是集合,集合中的元素不能重复,我们也就得到了不重复的值。
3.嵌套
嵌套是一种强大的功能,它可以是将字典嵌套到列表中,也可以将列表作为值嵌套到字典中,也可以是字典中嵌套字典。
字典列表:当字典中存储着个人的信息,且人数较多时,就需要将字典嵌套到列表中,这样就得到了一个字典列表,列表中的每一个元素都是一个字典,存储着某个人的信息。我们可以对列表进行操作,选中其中的字典元素,进而实现对字典的操作。
在字典中存储列表:某个物体的信息不是由完全单一元素构成的,有的可能需要用列表来表达,此时列表就需要作为字典中的值来存储,比如某种食物的配方。所以,当字典中的一个键需要对应许多值的情况下,可以考虑将这些值作为一个列表存入字典中。
在字典中存储字典:当一个人作为字典时,他的信息有时候不能用元素和列表完美的表达,他可能需要用到更多的字典,如住址信息的字典等,这就需要我们在字典中嵌套字典。这种方法会使代码变得比较复杂。因为要想访问字典中的字典,要先对外面的字典进行遍历,再访问想要访问的字典。
二、例题代码
1.使用字典
1.创建一个字典储存熟人的信息
2.储存一些人喜欢的数字
3.词汇表,
#熟人
acquaintance_zhangsan={'first_name':'zhang','last_name':'san','age':'22','city':'jinan'}
for key,value in acquaintance_zhangsan.items():
print(key+':'+value)
#喜欢的数字
favourite_num={'zhangsan':'3','lisi':'4','wangwu':'5','xiaoming':'9','lihua':'9'}
for key,value in favourite_num.items ():
print (key+"'s favourite num is "+value)
#词汇表
alphabet={'abandon':'抛弃放弃','principal':'校长','embrace':'欣然接受','desolate':'荒凉的','list':'列表','dictionary':'字典'}
for key,value in alphabet.items():
print(key+':'+value)
结果如下
first_name:zhang
last_name:san
age:22
city:jinan
zhangsan's favourite num is 3
lisi's favourite num is 4
wangwu's favourite num is 5
xiaoming's favourite num is 9
lihua's favourite num is 9
abandon:抛弃放弃
principal:校长
embrace:欣然接受
desolate:荒凉的
list:列表
dictionary:字典
2.遍历列表
1.词汇表2,在词汇表1中添加新的单词,再次遍历
2.河流:储存三条大河流,以及它流经的国家,将河流的名字打印出来
3.调查:创建一个接受调查人员名单,有些人在名单中,有的人不在,对于已经接受调查的人员,发送一条感谢信,对于不在名单中的,邀请他们来调查。
#词汇表2
alphabet['skeptical']='表示怀疑的'
alphabet['multibple']='许多的'
alphabet['dusk']='黄昏'
alphabet['overthrow']='推翻'
alphabet['soap']='肥皂'
for key,value in alphabet.items():
print(key+':'+value)
#河流
rival={'changjiang rival':'China','huanghe rival':'China','mihe rival':'China'}
for key,value in rival.items():
print('the '+key.title()+'runs through '+value.title())
#调查
favorit_language={'jen':'python','sarah':'c','edward':'','phil':''}
for key,value in favorit_language.items():
if value is None:
print('sorry'+key.title()+',there is not your info. please input your favourite language!')
else:
print(key.title()+', thanks for your participation')
结果
abandon:抛弃放弃
principal:校长
embrace:欣然接受
desolate:荒凉的
list:列表
dictionary:字典
skeptical:表示怀疑的
multibple:许多的
dusk:黄昏
overthrow:推翻
soap:肥皂
the Changjiang Rivalruns through China
the Huanghe Rivalruns through China
the Mihe Rivalruns through China
Jen, thanks for your participation
Sarah, thanks for your participation
Edward, thanks for your participation
Phil, thanks for your participation
3.字典的嵌套
1.人,创建两个人的字典,然后将这两个人的字典嵌套到people的列表中
2.宠物,大体同上
3.喜欢的地方,将value作为列表
4.喜欢的数字,大体同上
5.城市,嵌套字典
#人
zhangsan={'name':'zhangsan','age':'22','city':'jinan'}
lisi={'name':'lisi','age':'33','city':'beijing',}
people=[zhangsan,lisi]
for person in people:
for key,value in person.items():
print(key+':'+value)
#宠物
dog_0={'type':'dog','master':'zhangsan','name':'xiaogou',}
dog_1={'type':'dog','master':'lisi','name':'dahuang',}
cat_0={'type':'cat','master':'wangwu','name':'huahua'}
pets=[dog_0,dog_1,cat_0]
for pet in pets:
for key,value in pet.items():
print(key+':'+value)
#喜欢的地方
favourite_place={'zhangsan':['jinan','qingdao'],'lisi':['beijing','tianjin'],'wangwu':['hainan','sanya']}
for name,places in favourite_place.items():
print(name.title())
for place in places:
print(place.title())
#喜欢的数字
favorite_num={'zhangsan':['1','2'],'lisi':['3','6'],'wangwu':['5','8']}
for name,nums in favorite_num.items():
print(name.title())
for num in nums:
print(num)
#城市
cities={
'jinan':{
'location':'China',
'population':'9 million',
},
'new york':{
'location':'america',
'population':'8.5 million',
},
}
for city,infos in cities.items():
print(city.title())
for key,info in infos.items():
print(key+':'+info)
总结
1.字典的组成以及增删改查
2.遍历字典,有多种方法
3.字典的嵌套