天天看点

【Python入门】Python的Dict容器一

Python的Dict容器一

  • ​​7. Python的Dict容器​​
  • ​​7.1 什么是dict​​
  • ​​7.2 Python读取dict元素​​
  • ​​7.3 Python添加dict元素​​

7. Python的Dict容器

7.1 什么是dict

python的dict可以方便的保存, 例如“名字”->“成绩”的映射

在dict中,每一项包含一个key和一个value,key和value是一一对应的,在解决上面的问题中,我们可以使用名字作为key,成绩作为value,那么dict的定义如下:

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}      

在定义里,我们使用花括号{}表示这是一个dict,然后key和value之间使用冒号:分割,并且每一组key:value的最后,以逗号,表示这一组的结束

我们也可以使用以下的方式定义一个dict

d = dict()
print(d) # ==> {}      

不过这种定义方式,默认得到的是一个空dict,需要调用函数往里面添加数据

​示例​

新来的Gaven同学成绩是86,请编写一个dict,把Gaven同学的成绩也加进去

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}      
# Enter a code
d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49,
    'Gaven': 86
}      

7.2 Python读取dict元素

我们现在可以创建一个dict,保存名字和成绩的对应关系。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49,
    'Gaven': 86
}      

dict提供通过key找到对应value的功能,通过d[key]的形式,就可以得到对应的value。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49,
    'Gaven': 86
}
print(d['Bob']) # ==> 60
print(d['Alice']) # ==> 45      

这和list通过下标找到对应位置的元素是类似的

回顾一下前面使用下标的方式访问list元素的时候,当下标不存在时,就会引发错误,在dict中,也是一样的,当对应的key不存在时,也会引发错误。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49,
    'Gaven': 86
}
print(d['Dodo'])
# 抛出异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Dodo'      

它的意思是key不存在,因此我们在需要通过key找到value时,一定要先判断key存不存在,然后才使用上面的方式获取对应的value,以避免错误

if 'Alice' in d:
    print(d['Alice']) # ==> 45
if 'Dodo' in d: # Dodo不存在,所以不会走下面的逻辑
    print(d['Dodo'])      

除了使用这种方法,还有一种方法可以通过key来获取对应的value,这种方法不会引起错误,dict本身提供get方法,把key当作参数传递给get方法,就可以获取对应的value,当key不存在时,也不会报错,而是返回None。

print(d.get('Alice')) # ==> 45
print(d.get('Dodo')) # ==> None      

因为通过get方法在代码实现上更加简单,且不会引起错误,因此更加推荐使用get方法来获取dict的元素

​示例​

根据如下dict,打印出Alice, Bob, Candy, Mimi, David的成绩,当同学不存在时,打印None

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}      
# Enter a code
d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
print(d.get('Alice'))
print(d.get('Bob'))
print(d.get('Candy'))
print(d.get('Mimi'))
print(d.get('David'))      
【Python入门】Python的Dict容器一

7.3 Python添加dict元素

dict和tuple不一样,dict是可变的,我们随时可以往dict中添加新的key-value,比如成绩dict:

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}      

需要往里面添加Dodo、Mimi的成绩时,可以使用赋值语句往里面添加元素:

d['Mimi'] = 72
d['Dodo'] = 88
print(d)      

实际上,value可以是任意类型的元素,可以是list、tuple等,假如Mimi近两次成绩分别是72,73,Dodo近两次的成绩分别是88,90,则可以使用赋值语句往dict中添加list元素

d['Mimi'] = [72, 73]
d['Dodo'] = [88, 90]
print(d)      

此后,如果Mimi、Dodo的第三次成绩也出来了,分别是75,90,则可以先通过key把对应的value查询出来,然后再往类型是list的value中添加第三次的成绩。

d['Mimi'].append(75)
d['Dodo'].append(90)
print(d)      

​示例​

d = {
    'Alice': [45],
    'Bob': [60],
    'Candy': [75],
}      
d = dict()
d['Alice'] = []
d['Bob'] = []
d['Candy'] = []
d['Alice'].append(50)
d['Alice'].append(61)
d['Alice'].append(66)
d['Bob'].append(80)
d['Bob'].append(61)
d['Bob'].append(66)
d['Candy'].append(88)
d['Candy'].append(75)
d['Candy'].append(90)