python—dict使用注意点
在python中,dict和list是两种常见数据类型,dict用于内容空间足够、根据值快速检索的场景,list用于内存空间有限、根据下标快速检索的场景。 使用场景: List:类似于C中的array数组,数据存储在一段连续内存空间中;根据值查询时候,需要从头到尾逐一遍历,复杂度O(N),但根据索引index查询时候,直接做索引index偏移,复杂度O(1)。 Dict:在python底层实现为可变哈希表,本质也可以看做List,区别在于List只存放数值,而Dict存放数值所对应的索引+数值。 原理说明: List:python底层实现为一个长度可变的数组,数组中存放的是每个元素的索引inference,根据索引查询不受List长度和所存放的元素影响。对于频繁的append和insert操作,CPython会额外进行一些技巧,比如频繁append时候会额外分配比实际需要大一些的空间,避免频繁开辟空间。 Dict:可变哈希表,key通过hash函数映射为哈希值,哈希值进一步映射到哈希表大小size的位置index上,value的地址就存放在index所对应的空间上。说明:Dict中的key必须是可哈希(python中不可变数据都是可哈希的,而可变数据则不可哈希),原因是一旦key可变,key发生变化之后,则无法根据变化后的新key值查询到value