学习教材
第六章 字典
1、字典的简单操作 #定义一个字典
cars={'color':'red','price':200000}
print(cars)
#访问字典中的值
print(cars['color'])
print(cars['price'])
#为字典添加键值对
cars['owner']='sushan'
print(cars)
print(cars['owner'])
#删除键值对
del cars['owner']
print(cars) 输出结果:
{‘color’: ‘red’, ‘price’: 200000}
red
200000
{‘color’: ‘red’, ‘price’: 200000, ‘owner’: ‘sushan’}
sushan
{‘color’: ‘red’, ‘price’: 200000}
2、遍历字典
鉴于字典可能包含大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息
因此有多种遍历字典的方式:可遍历字典的所有键—值对、键或值。
遍历所有的键值对 items()
方法items()返回一个键—值对列表。用for循环依次将每个键—值对存储到指定的两个变量中 code={
'first':'c',
'second':'c++',
'third':'c#',
}
#可声明两个变量,用于存储键—值对中的键和值
for key,value in code.items():
print('key:'+key)
print('value:'+value) 输出结果:
key:first
value:c
key:second
value:c++
key:third
value:c# 注意:即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。
遍历字典中的所有键 keys()
keys()返回的字典中所有的键 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name) 输出结果:
jen
sarah
edward
phil
也可以不使用keys方法,直接遍历字典,默认遍历的就是所有的键 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages:
print(name) 输出结果同上,不变
应用:调查一些人,用一个字典存储每个人最爱的编程语言,然后再用一个列遍存储你的朋友,对于受调查的人中,若有你的朋友,就打印一句话“Hi,xxx. I see your favorite language is xxx”
这个问题有两种写法:
1、遍历所有的键,若遇到你朋友,就打印
2、遍历所有的朋友,若遇到在字典的键中的朋友,就打印 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
my_friends=['phil','juil']
#遍历所有键
for name in favorite_languages:
if name in my_friends:
print( 'Hi,'+name+'. I see your favorite language is '
+favorite_languages[name].title()) 输出结果:
Hi,phil. I see your favorite language is Python favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
my_friends=['phil','juil']
#遍历朋友 看是否在字典里
for name in my_friends:
if name in favorite_languages.keys():
print( 'Hi,'+name+'. I see your favorite language is '
+favorite_languages[name].title())
两种方法都能完成题目要求。
遍历字典中的所有值 values()
方法values(),它返回一个值列表,而不包含任何键。用法与keys()相同 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.values()):
print(name.title())
3、输出时排序和去重
排序
字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常你想要的只是获取与键相关联的正确的值。要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此,可使用函数sorted()来获得按特定顺序排列的键列表的副本:
注意:这里使用的是sorted(),前面我们学过,sorted()只是临时排序,不改变原有顺序 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title()) 输出结果:
Edward
Jen
Phil
Sarah
去重
前面介绍的遍历方法,都没有去除重复的元素
通过对包含重复元素的列表我们可以调用set(),Python会找出列表中独一无二的元素,并使用这些元素来创建一个集合 favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in set(favorite_languages.values()):
print(name.title()) 输出结果:
Python
C
Ruby
4、嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
在列表中存储字典 car1={'color':'red','price':'500'}
car2={'color':'blue','price':'1000'}
car3={'color':'black','price':'1100'}
#创建一个列表 将三个字典都放进去
cars=[car1,car2,car3]
for num in cars:
print(num) 输出结果:
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘blue’, ‘price’: ‘1000’}
{‘color’: ‘black’, ‘price’: ‘1100’}
为列遍添加十个汽车,输出前五个 cars=[] #空列表
for num in range(1,11):
car={'color':'red','price':'500'}
cars.append(car)
#输出前五个
for num in range(0,5):
print(cars[num])
print('...') 输出结果:
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
{‘color’: ‘red’, ‘price’: ‘500’}
…
在字典中存储列表
一个人可能喜欢多个语言,打印每个人喜欢的语言,注意喜欢一个语言和喜欢多个的打印的话不一样哦 #字典里面存列表
a = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name,language in a.items():
if len(language)>1:
print(name.title()+"'s favorite languages are: ")
for num in language:
print(num)
else:
print(name.title()+"'s favorite language is: "+language[0])
在字典中存字典
一个字典用来存储所有用户的信息,里面每个用户的信息都是一个字典,要求打印所有用户信息 users={
'sushan':{
'num':'001',
'password':'123',
},
'sarah':{
'num':'002',
'password':'123',
},
'juil':{
'num':'003',
'password':'123',
},
}
for name,info in users.items():
print(name.title()+':')
for one,two in info.items():
print(one+'='+two) 输出结果;
Sushan:
num=001
password=123
Sarah:
num=002
password=123
Juil:
num=003
password=123