首页 > 试题广场 >

python中dict和list的区别,dict的内部实现

[问答题]

请你简要介绍一下python中dict和list的区别,以及dict的内部实现方式

Dict是字典,以键值对的形式存储,查找插入速度快但内存占用大。 List是列表,查找插入速度较慢但内存占用小。 Dict的内部实现是哈希表,用哈希函数给字典的键分配位置
编辑于 2019-02-23 12:10:52 回复(0)
dict是无序可变映射的可迭代对象,每个组成元素键值对,键值唯一 list是有序可变的可迭代对象,
发表于 2019-04-06 14:45:10 回复(0)
dict:采用k和v的一一映射关系存储,数据获取速度较快,但占用内存较大。list:占用内存较小,但数据获取效率相比于dict会慢很多,扩展性较好.
发表于 2019-02-13 12:54:50 回复(0)
Dict是字典类型,里面是key和value的映射关系,无序。list是列表,是一个可变序列,有续,索引是下标。字典内部实现应该是一个hash表 所以查找效率很高
发表于 2018-12-31 18:12:08 回复(1)
<p>字典是key-value键值对型变量,list列表可变</p><p><br></p>
发表于 2020-08-19 10:50:17 回复(0)

dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;     
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;     
  2. 占用空间小,浪费内存很少。
字典是通过哈希表实现的。也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的。哈希函数的目的是使键均匀地分布在数组中。由于不同的键可能具有相同的哈希值,即可能出现冲突,高级的哈希函数能够使冲突数目最小化。

发表于 2019-11-05 17:06:04 回复(0)
list是有序表实现的,扩展性比较好,它的索引就是它的下标,属于可变对象。
dict是字典,里面是key和val的映射,里面是无序的。是由hash映射实现的,查找效率高
发表于 2019-08-09 23:37:34 回复(0)

列表是序列,可以理解为数据结构中的数组,字典可以理解为数据结构中的hashmap

他俩都可以作为集合来存储数据

从差异特征上来说

1. list是有序的,dict是无需的

2. list通过索引访问,dict使用key访问

3. list随着数量的正常增长要想查找元素的时间复杂度为O(n), dict不随数量而增长而变化,时间负责都为O(1)

4. dict的占用内存稍比list大,会在1.5倍左右


特征决定用途:

list一般可作为队列、堆栈使用,而dict一般作为聚合统计或者快速使用特征访问等

从应用场景来说:


list 是记录简单有序数据的,就是一对一的那种,可以理解为一维数组.

比如你记录猫的名字,就可以用list = ['第1只猫名字','第2只猫名字'] ...

比如你记录饭店的菜品,就可以用list = ['第1个菜红烧肉','第2个菜红烧大肠',第3个菜'红烧排骨'] ...

这里的记录,是多条记录重复的,需要按一定顺序来记录.

list 也可以有嵌套,嵌套里面的list仍然可以理解为一维数组

比如常见的季度与月份的关系 list = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

又或者你从excel读取一行数据,存到list中,也需要用到list嵌套

又或者你从SQL读取一行数据,存到list中,也会用的list嵌套.

这里的记录,是多条按一定顺序存放的,仍然需要按一定顺序来读取存放.


上面是我理解的list,有序的应用场景.


dict 是记录复杂无序数据,就是一对多,可以理解为***数组.

比如你记录一次野餐朋友带的食物数量, dict = {'小明':{'红烧肉':6,'大闸蟹':8,'水煮鱼':1},'小花':{'黄瓜':9,'番茄':2},'小六子':{'啤酒':30,'可乐':40}}

dict可以嵌套list,把无序的数据调整为有序的数据,可以简单地理解为,一对多个一维数组,本质上还是***数组.

比如你要记录同学们有多少个女朋友,dict = {'小明':['1号女友','2号女友'],'大个子':['1号女友','2号女友','3号女友']},你要统计谁的女朋友多,这个就比较明显地体现出来了.

比如你要记录一次会议参加的人员的基本信息,大家的信息都不一样时,也是无序随机事件:

dict = {'男性':{'张博':{'年龄':30,'职业':'老师','级别':'高级教师'},'王强':{'手机':'1309999999'}},'女性':{'小花':{'爱好':'化妆','职业':'美容师'}}}



发表于 2019-07-04 02:04:42 回复(0)

Dict查找速度快,占用 内存大,list查找速度慢,占用内存小,dict用大括号表示,list是中括号表示,dict的内部实现是hash表,dict是一个数组,数组的键是通过hash函数处理后得到的,hash函数的目的是使键值均匀分布在数组中;dict是无序的可变可迭代对象,list是有序可变可迭代对象。

发表于 2019-06-04 09:41:47 回复(0)

List是通过顺序表实现的,而字典是hash映射实现

发表于 2019-05-15 18:02:24 回复(0)
dict查找速度快,占用内存大,list查找速度慢,占用内存小。
发表于 2019-05-11 19:17:07 回复(0)
dict是字典,数据为键值对,list为列表,字典通过哈希值分配储存位置
发表于 2019-04-23 17:45:35 回复(0)

字典的存储是用哈希表计算key对应的存储位置,所以搜索效率更高


发表于 2019-04-17 19:16:09 回复(0)
list是链表 dict是哈希
发表于 2019-04-16 20:58:24 回复(0)
dict是字典,以键值对的形式存储,查找插入速度快但内存占用大。 list是列表,查找插入速度较慢但内存占用小。 dict的内部实现是哈希表,用哈希函数给字典的键分配位置
发表于 2019-04-12 11:41:26 回复(0)