Python学习系列之字典(十四)

一、什么是字典
字典:

  • Python内置的数据结构之一,与列表一样是一个可变序列
  • 以键值对的方式存储数据,字典是一个无序序列

 

二、字典示意图:

 

 解析:字典是无序序列,存储时不会按照顺序来存储,即第一个存入的值可能在第6个位置,第二个存储的值可能存储在第4个位置,第四个存储的值可能存储在第1个位置。列表存储是按顺序存储的,第一个存储的是在第一个位置,第二个存储的值在第2个位置。

另:像字符串、整数等都是不可变序列,不可变序列不能执行增删改,如果要进行增删改则需要重新开辟一块内存空间,然后将变量指向新的内存空间。

 

三、字典的实现原理

字典的实现原理:

  • 字典的实现原理与查字典类似,查字典是先根据部首或拼音查找汉字对应的页码,Python中的字典是根据key查找value所在的位置。

 通过字典,查找任何值的步数都是一样的,即先查到key(通过偏旁和笔画,找到值在哪一页),然后定位到值的位置(找到字典对应的页数,即找到了字)

 

四、字典的创建

1.字典的创建方式:

1.1 最常用的方式:使用花括号{}

举例:

#使用{}创建字典
score={'张三':100,'李四':99,'王五':88}
print(score,type(score))

  执行结果如下:

 

1.2 使用内置函数dict()创建字典

举例:

#使用dict()函数创建字典
student=dict(name='jack',age=20)
print(student,type(student))

  执行结果如下:

1.3 创建空字典:

#创建空字典
d={}
print(d,type(d))

  执行结果是:

 

五、字典的常用操作

1. 字典中元素的获取

  • 通过[]获取,举例:score['张三']
  • 通过get()方法,举例:score.get('张三')

[]取值与使用get()取值的区别:

  • []如果字典中不存在指定的key,抛出keyError异常
  • get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回

1.1 通过[]获取举例:

#字典元素的获取,第一种方式使用[]
score={'张三':100,'李四':99,'王五':88}
print(score['张三'])
print(score['陈六'])  #不存在时,报KeyError

  执行结果为:

 

  1.2 通过get()方法举例:

#字典元素的获取,第二种方式使用get
score={'张三':100,'李四':99,'王五':88}
print(score.get('张三'))
print(score.get('张五'))
print(score.get('赵六',89))   #89是在查找'赵六'所对应的value不存在时,提供的一个默认值

  执行结果如下:

 2. key的判断

 

 

 

'''key的判断'''
scores={'张三':100,'李四':99,'王五':88}
print('张三' in scores)
print('张三' not in scores)

  执行结果如下:

 

 

 3.字典元素的增删改

3.1 字典元素的删除

#字典元素的删除
scores={'张三':100,'李四':99,'王五':88}
del scores['张三']   #删除指定的key-value对
#scores.clear()  #清空字典的元素
print(scores)

  执行结果如下:

 

 

 

3.2 字典元素的修改和新增

#新增和修改字典的键值对
scores={'张三':100,'李四':99,'王五':88}
scores['陈六']=100    #新增和修改元素
print(scores)

  执行结果如下:

 

 

 4.获取字典试图的3个方法

 

 

 

4.1 获取所有的key

scores={'张三':100,'李四':99,'王五':88}
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys))   #将所有的key组成的视图转成列表

    执行结果:

 

 

 

 

 4.2 获取所有的value

#获取字典所有的value
scores={'张三':100,'李四':99,'王五':88}
values=scores.values()
print(values)
print(type(values))
print(list(values))     #将获取到的值转换成List

  执行结果:

 

 4.3 获取字典所有的key,value键值对

#获取字典所有的key,value键值对
scores={'张三':100,'李四':99,'王五':88}
items=scores.items()
print(items)
print(list(items))  #转换之后的列表元素是由元组组成

  执行结果:

 

 

5.字典元素的遍历

for item in scores:

  print(item)

举例:

#字典元素的遍历
scores={'张三':100,'李四':99,'王五':88}
for item in scores:
    print(item,scores[item],scores.get(item))

  执行结果:

 

 6. 字典的特点

字典的特点

  • 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
  • 字典中的元素是无序的
  • 字典中的key必须是不可变对象
  • 字典也可以根据需要动态地伸缩
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

7.字典生成式

 

 

内置函数zip()

  • 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表

 

 举例:

#字典生成式
items=['Fruits','Books','Others']
prices=[96,78,65]
lst=zip(items,prices)
print(list(lst))

  执行结果:

 

 把上述字典生成式使用如下方式写出报错,代码如下:

items=['Fruits','Books','Others']
prices=[96,78,65]
d={item:price for items,prices in zip(items,prices) }
print(d)

  执行结果提示item和price未定义,原因待查

 

posted @ 2020-11-27 18:31  寒冰宇若  阅读(202)  评论(0编辑  收藏  举报