当前位置:首页 » 编程语言 » python字典生成

python字典生成

发布时间: 2024-11-20 18:46:41

‘壹’ python 数组 变成 字典的方法

1、现在有两个 列表 ,list1 = ['key1','key2','key3']和list2 = [Ƈ',ƈ',Ɖ'],把他们转为这样的 字典 :{'key1':Ƈ','key2':ƈ','key3':Ɖ'}

>>list1 = ['key1','key2','key3']
>>list2 = [Ƈ',ƈ',Ɖ']
>>>dict(zip(list1,list2))
{'key1':Ƈ','key2':ƈ','key3':Ɖ'}

2、将嵌套 列表 转为 字典 ,有两种方法,

>>>new_list= [['key1','value1'],['key2','value2'],['key3','value3']]
>>>dict(list)
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}
或者这样:
>>>new_list= [['key1','value1'],['key2','value2'],['key3','value3']]
>>>new_dict = {}
>>> for i in new_list:
... new_dict[i[0]] = i[1] # 字典 赋值,左边为key,右边为value
...
>>> new_dict
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

‘贰’ Python字典的底层实现

字典是一种可变、无序容器数据结构。元素以键值对存在,键值唯一。它的特点搜索速度很快:数据量增加10000倍,搜索时间增加不到2倍;当数据量很大的时候,字典的搜索速度要比列表快成百上千倍。

在Python中,字典是通过散列表(哈希表)实现的。字典也叫哈希数组或关联数组,所以其本质是数组(如下图),每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket。

定义一个字典 dic = {},假设其哈希数组长度为8。

Python会根据哈希数组的拥挤程度对其扩容。“扩容”指的是:创造更大的数组,这时候会对已经存在的键值对重新进行哈希取余运算保存到其它位置;一般接近 2/3 时,数组就会扩容。扩容后,偏移量的数字个数增加,如数组长度扩容到16时,可以用最右边4位数字作为偏移量。

计算键对象 name 的哈希值,然后比较哈希数组对应索引内的bucket是否为空,为空返回 None ,否则计算这个bucket的键对象的哈希值,然后与 name 哈希值比较,相等则返回 值对象 ,否则继续左移计算哈希值。

注意:
1.键必须为可哈希的,如数字、元组、字符串;自定义对象需要满足支持hash、支持通过 __eq__() 方法检测相等性、若 a == b 为真,则 hash(a) == hash(b) 也为真。

2.字典的内存开销很大,以空间换时间。
3.键查询速度很快,列表查询是按顺序一个个遍历,字典则是一步到位。
4.往字典里面添加新键可能导致扩容,导致哈希数组中键的次序变化。因此,不要在遍历字典的同时进行字典的修改。

热点内容
穿越火线服务器ip地址和端口 发布:2024-11-20 19:59:43 浏览:701
李鸿章环球访问 发布:2024-11-20 19:54:07 浏览:197
方舟联机服务器怎么发育 发布:2024-11-20 19:53:15 浏览:937
苹果手机怎么设计密码 发布:2024-11-20 19:53:13 浏览:181
一个服务器可以搭建多少游戏 发布:2024-11-20 19:43:56 浏览:971
哈希函数c语言 发布:2024-11-20 19:43:03 浏览:744
微信怎么多开分身安卓 发布:2024-11-20 19:37:39 浏览:375
上传ftp工具 发布:2024-11-20 19:37:36 浏览:27
安卓手机找不到了调静音了怎么找 发布:2024-11-20 19:37:28 浏览:219
为什么qq的服务器加速不行 发布:2024-11-20 19:34:13 浏览:513