Python基础之dict和set

Python基础之dict和set

1 dict

​ 字典,全称为dictionary,在其他语言中也叫map,使用键值对(key-value)来存储数据,具有查找速度很快的特性,是典型的使用内存空间换查找时间的例子。

​ 是可变的无序对象,但是key是不可变对象

  • 无序的意思是字典内部的存储是和key的顺序没有关系的。
  • 可变是指字典内部的元素是可以增加删除的。
  • key是不可变对象是指字典要根据key值来计算value的存储位置,所以key是不可变的,否则根据同一个key计算出来的 value可能就不同,字典内部就混乱了,所以为了保证计算的准确性,必须保证key值为字符串,整数这些不可变对象,而不能是列表这些可变对象,最常用的key是字符串。
>>> key = [1,2,3]
>>> d[key] = 'alist' #定义一个key为list,将value赋值为‘alist’时就会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
  • 根据key值来计算内存位置的算法叫做hash算法

1.1 list与dict的对比

list:

  • 查找插入速度慢,list越大,速度越慢。
  • 空间占用小,内存浪费少。

dict:

  • 查找插入速度快,查找速度不会随着key的增加而减慢。
  • 空间占用大,内存占用大。

打个比方:

​ 现在有学生和学生成绩来存储,可以有两种存储方式,一种是使用list,一种是使用dict。

list方式:

name = ['any','Tom','Xiao']

score = [90,78,99]

​ 当查找Tom分数时,需要先从第一个列表中从前往后查找Tom的位置,然后再在第二个列表对应位置取分数

​ dict方式:

d = {
   'Any
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值