在python中,字典是一系列键-值对,每一个键都与一个值相互关联。通过使用相应的键来访问与之对应的值
与键相关联的值可以是数字、字符串、列表以及字典,我们可以将python中的任何对象都作为字典的值
字典的表示:用放在{}里面的一系列键-值对进行表示
键-值对是两个相互关联的值
键和值之间用“:”分隔,键-值对之间用“,”分隔
5.1.1 访问字典中的值
要获取键相关的值,可以依次将指定字典名和放在{}里面的键值
alen={"1":"qwer","dd":"rwe"}
print(alen["1"])
5.1.2 添加键-值对
字典是一种动态的结构,我们可以随时在其中添加键-值对
添加键-值对,可以依次指明字典名、用方括号阔起来的键和相关的值
alen={"1":"qwer","dd":["erw","rew"]}
print(alen["1"])
alen['erwer']=["erw","rew"]
print(alen)
结果:{'1': 'qwer', 'dd': ['erw', 'rew'], 'erwer': ['erw', 'rew']}
5.1.3 先创建一个空的字典
原因:有时候为了方便,有时候是必须需要这个样子做
方式:字典的名字={},然后在分行添加各个键-值对
使用时间:当我们使用字典来存储用户提供的数据或者编写能大量自动生成键-值对的代码的时候
5.1.4 修改字典中的值
要修改字典中的值,可以依次指定字典名、用方括号括起来的键以及与该键相关联的新值
5.1.5 删除键-值对
对于字典中不需要的信息,我们可以使用del语句将其删除
格式:del 指定的字典名和要删除的键
注意:一旦删除键-值对,就意味着将其永久的删除了
alen={"1":"qwer","dd":["erw","rew"]}
print(alen["1"])
alen['erwer']=["erw","rew"]
print(alen)
del alen["1"]
print(alen)
del alen
#print(alen)报错,不存在字典alen
结果:
{'1': 'qwer', 'dd': ['erw', 'rew'], 'erwer': ['erw', 'rew']}
{'dd': ['erw', 'rew'], 'erwer': ['erw', 'rew']}
5.2 遍历字典
5.2.1 遍历所有的键-值对
要编写用于遍历字典的for循环,可以声明两个变量,用于存储键-值对中的键和值
对于声明的这两个变量的名称,我们可以采用任何值。
注意:
1.遍历字典的时候,键-值对的返回顺序也与存储顺序不同。
2.python不关心键-值对的存储顺序,而值跟踪键和值之间的关联关系
list1 = {"列表":"list=[]","元组":"list()","字典":"list{}"}
for i,j in list1.items():
print(i,j)
#结果:
列表 list=[]
元组 list()
字典 list{}
注意:在第一次编写代码的时候没有注意到(.items())的存在
第一个变量的名字为元组中的键
第二个变量的名字为元组中的值
5.2.2 遍历字典中所有的键
当我们不需要去使用元组中的值的时候,使用元组.keys()来访问元组中的键是一个很好的方法
list1 = {"列表2":"list=[]","元组2":"list()","字典3":"list{}"}
for i in list1.keys():
print(i)
#结果:
列表2
元组2
字典3
遍历字典的时候会默认遍历所有的键,所以也可以采取下面的例子中的方法来遍历
方式1:
list1 = {"列表2":"list=[]","元组2":"list()","字典3":"list{}"}
for i in list1:
print(i)
#结果:
列表2
元组2
字典3
方式2:
list1 = {"列表2":"list=[]","元组2":"list()","字典3":"list{}"}
for i, j, k in list1:
print(i)
#结果:
列
元
字
注意:
1.通过方式2遍历元组的键值的时候必须保证元组中所有的键的长度是一样,否则程序无法正常运行
2.for后面的变量名的个数必须和元组中键的长度保持一致,否则程序将无法正常运行。
3.通过方式2中变量的含义:第n位的变量代表元组中相应的键的第n个字符
4.使用这种方法的时候一定要慎重的考虑
方法元组.keys()不仅仅可以用来遍历元组,实际上,它也可以返回一个列表,其中包含有字典中所有的键
5.2.3 按顺序遍历遍历字典中的所有的键
字典明确的记录了键与值之间的关联关系,但是在获取字典元素的时候,获取的顺序是不可预测的。
要以返回特定顺序的元素的时候,我们可以在for循环中对返回的键进行排序,可以使用sorted()函数
list1={
"jen":"python",
"sarah":"c",
"edward":"ruby",
"phil":"python"
}
for name in sorted(list1.keys()):
print(name.title())
#结果:
Edward
Jen
Phil
Sarah
通过这种方法是在for循环前先对整个键所在的列表进行排序
5.2.4 遍历字典中所有的值
当我们需要去使用元组中的值的时候,使用元组.values()来访问元组中的值,它返回的是一个值列表,不包含
任何的键
list1={
"jen":"python",
"sarah":"c",
"edward":"ruby",
"phil":"python"
}
for name in sorted(set(list1.values())):
print(name.title(),end=" ")
print()
for name in set(sorted(list1.values())):
print(name.title(),end=" ")
print()
for name in list1.values():
print(name.title(),end=" ")
print()
for name in sorted(list1.values()):
print(name.title(),end=" ")
#结果:
C Python Ruby
Ruby Python C
Python C Ruby Python
C Python Python Ruby
在python中使用set()函数来剔除列表中重复的元素
存在问题:
set(sorted(list))与sort(set(list))的结果为什么不同?
5.3 嵌套
嵌套:将一系列字典存储在列表中,或者将列表作为值存储在字典中
5.3.1 字典列表
使用场景:用于管理独立个体的信息的集合
list1=[]
for i in range(5):
alien={"name":"alien","point":5,"speed":23}
list1.append(alien)
for i in list1:
print(i)
5.3.2 在字典中存储列表
使用场景:例如为某一个顾客所提供的各种不同的信息进行保存
list1={
"jen":[1,2,3,4,5],
"len":["fsdf","fsdfs"]
}
print(list1)
存在疑惑:
如何将自己输入或者创建的列表塞到元组中
在函数那块得到解决
注意:
列表和字典的嵌套层级不应该太多。
5.3.3 在字典中存储字典
可以在字典中存储字典,但是这个样子做的话,代码可能会变的复杂起来。
注意:
在嵌套字典的时候应该尽量去嵌套结构一致的字典,这样做有助于减少for循环内部代码对的复杂性
5.4 习题
list1 = {
"first_name":"张",
"last_name":"振",
"City":"延安"
}
for i,j in list1.items():
print(i,":",j)
love_number = {
"小张":5,
"小王":6,
"小黄":7,
"小李":8,
"小白":9
}
print(love_number)#通过种方法获得的是之前数据在字典中的存储的形式
print(love_number.items())#通过这种方法获得的字典中的键-值对,并以元组的形式进行表示
print(love_number.values())#通过这种方法获得的是字典中所有的值构成的列表
for name, number in love_number.items():
print(name,"love number is ", number)
python_items={
"列表":["大小可变","pop,del删除元素","[]"],
"元组":["特殊的列表","大小不可变","()"],
"字典":["由键和值组成"]
}
print(python_items.values())
print(python_items.items())
for name,next in python_items.items():
print(name,"的含义为:",end="")
for i in next:
print(i,end=" ")
print()
//笔记的存档就要完了