#字典(dictionary)
和汉语中意思差不多,就是查词,解释词。
学习字典要对应列表来学。(列表在上篇内容)
因为列表有很多不方便的地方,列表的下标只能表示数据,因此列表不能表示出关系(比如姓名—学号)。
字典可以解决这个问题。通过字典的一个下标,能够找到与这种除了数据的对应关系。
###字典的下标叫键(key),先说一下字典中的键。
字典中的值都存储在一个特定的键(key)下,键可以是数字,字符串甚至是元组。
###重点 字典中的一个键必须是唯一的。
看下面的一个例子:
age={}
age["Bob"]="44"
age["BOb"]="5"
print(tang)
输出结果为:
{'Bob': '44', 'BOb': '5'}
给键赋值了两个Bob 最后输出结果并没有报错,那么这么说键就就不是唯一的了。实际上不是这样的。
字典关心的怎样快速得到信息想要查找的信息,我们得到的是Bob即是44岁,又是5岁,显然是不正确的,说明这当中有两个人都叫Bob,生活中这样的例子太多了。在班里,我们登记成绩即使俩个人都叫Bob,学号也不一样吧。这样才能登记出正确的成绩。回过来看,键必须是唯一的。
###字典中的一个键可以对应多个值,
当然啦,叫tang先生的成绩单上,不是只有一门的成绩
grade={}
grade["tang"]="97","99","87"
print(grade)
输出结果为:
{'tang': ('97', '99', '87')}
##字典是由多个键(key)和其对应的值(value)构成的key-value对组成。key 和 value 中间用冒号隔开,项之间用逗号隔开,整个字典是由大括号{}括起来。
tang={"name":"gang","age":"7"}
print(tang) #输出完整的字典
print(tang.keys()) #输出所有键
print(tang.values()) #输出所有值
输出结果为:
{'name': 'gang', 'age': '7'}
dict_keys(['name', 'age'])
dict_values(['gang', '7'])
看下面的例子。并且打印证明它们是字典类型。
tang={}
a=type(tang)
print(a)
tang2={}
print(type(tang2))
tang3=dict()
print(type(tang3))
输出结果为:
<class 'dict'>
<class 'dict'>
<class 'dict'>
我们发现字典和列表类似,但是字典是用的{},列表用的是[]。
2.现在我来打印字典,看一下字典里面有什么东西
a=dict()
print(a)
输出结果为:
{}
这时发现字典里面是空的。字典可以为空。
###字典是无序的对象的集合(列表是有序的对象的集合)
tang={"name":"唐","age":"13"}
print(tang)
输出结果为:
{ 'age': '13','name': '唐'}
由此可见词典输出的顺序和输入的顺序不一致。有一次验证了字典作用是保存了哪些数据。
###从字典中取值
tang={"name":"唐","age":"13"}
print(tang["name"])
输出的结果是:
唐
###在字典中增加一个键 —值对
tang={"name":"唐"}
tang["age"]=13
print(tang)
输出结果:
{'name': '唐', 'age': 13}
###在字典中修改一个键 —值对**
tang={"name":"唐"}
tang["name"]="刚刚"
print(tang)
输出结果为:
{'name': '刚刚'}
由此可知,如果key存在就是修改键—值对,如果key不存在就是增加键—值对。
###在字典中删除一个键 —值对**
tang={"name":"唐","age":13}
tang.pop("name")
print(tang)
输出结果为:
{'age': 13}
###统计键值对的数量
tang={"name":"唐","age":13}
print(len(tang))
输出结果为:2
###合并键值对
a={"name":"yun"}
b={"age":"13"}
a.update(b)
print(a)
输出结果为:
{'name': 'yun', 'age': '13'}
值得注意的是a.update(b)的方式并没有返回一个新的字典,而是对a进行了更新。此时的返回值是None.
a={"name":"yun"}
b={"age":"13"}
c=a.update(b)
print(c)
输出结果为:
None
###清空字典
a={"name":"yun"}
a.clear()
print(a)
输出结果为:
{}
值得注意的是清除字典和合并字典一样,并没有形成一个新的字典,而是对原有字典的清除,此时的返回值是None.这里我就不验证了。