python 通过dict(zip)和{}的方式构造字典的方法

作者:Weiyaner 时间:2023-10-03 00:05:12 

在python中,通常通过dictzip组合来构建键值对。

比如:

aid = [i for i in range(10)]
name = [[1] * 3] * len(aid)
dic1 = dict(zip(aid,name))
print('dic1:', dic1)

得到:

{0: [1, 1, 1],
1: [1, 1, 1],
2: [1, 1, 1],
3: [1, 1, 1],
4: [1, 1, 1],
5: [1, 1, 1],
6: [1, 1, 1],
7: [1, 1, 1],
8: [1, 1, 1],
9: [1, 1, 1]}

这样建立的是aidname的一一映射关系,将aid作为key,第二列作为value。。

还可以通过dic函数的形式或者{}直接构造

dic2 = {'aid': aid,'name':name}
print('\ndic2:',dic2)

{
‘aid’: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
‘name’: [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
}

这样通过建立新的key,list作为value存储。

以上两种方法,如果想经过aid进行索引取对应值的话:

方法1可以直接取出,方法2还需要获取到index再进行取值。所以法1速度更快但是与之相对的,法1存储了很多个key-value对,在存储空间上不如法2。

空间占用测试如下:

aid = [i for i in range(10)]
name = [[1] * 3] * len(aid)

dic1 = dict(zip(aid,name))
dic2 = {'aid': aid,'name':name}
print('dic1:', dic1)
print(sys.getsizeof(dic1))

print('\ndic2:',dic2)
print(sys.getsizeof(dic2))
dic1: {0: [1, 1, 1], 1: [1, 1, 1], 2: [1, 1, 1], 3: [1, 1, 1], 4: [1, 1, 1], 5: [1, 1, 1], 6: [1, 1, 1], 7: [1, 1, 1], 8: [1, 1, 1], 9: [1, 1, 1]}
360

dic2: {'aid': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 'name': [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]}
232

经过测试,字典占用空间和键值对的个数并不是线性的。如果在很大的数据中,就需要考虑占用空间的大小,比如。10000个键值对,占用了7w字节。(应用在离线保存embeddings中)

来源:https://blog.csdn.net/weixin_42327752/article/details/125855403

标签:python,dict,zip,字典
0
投稿

猜你喜欢

  • Vue.js中安装一个路由器demo

    2024-05-09 14:51:04
  • 整合ckeditor+ckfinder,解决上传文件路径问题

    2022-12-10 09:25:39
  • Vue3中watch的使用详解

    2024-05-09 15:20:19
  • Linux下mysql新建账号及权限设置方法

    2024-01-22 21:38:07
  • python画图时设置分辨率和画布大小的实现(plt.figure())

    2022-11-09 18:12:17
  • sql server 带列名导出至excel

    2008-11-25 11:07:00
  • 百度编辑器复制微信图片无法保存

    2023-08-14 17:32:46
  • Python入门教程1. 基本运算【四则运算、变量、math模块等】 <font color=red>原创</font>

    2023-12-21 19:44:16
  • 如何利用JS将手机号中间四位变成*号

    2024-02-23 20:07:51
  • Python使用pptx实现复制页面到其他PPT中

    2021-07-13 01:28:16
  • pycharm打开命令行或Terminal的方法

    2022-12-11 07:07:08
  • Python 反转输出正整数的操作

    2021-05-04 18:37:16
  • Pandas 实现分组计数且不计重复

    2022-01-30 03:39:56
  • sqlserver 快速生成汉字的首拼字母的函数(经典)

    2012-06-06 20:16:41
  • 用私有属性来拯救IE7缩放图片的失真

    2009-03-03 13:57:00
  • php实现生成验证码实例分享

    2024-05-02 17:13:26
  • Sub-Pixel Bug?!

    2010-03-24 18:09:00
  • python请求域名requests.(url = 地址)报错

    2021-12-18 06:28:36
  • MySQL之存储过程按月创建表的方法步骤

    2024-01-25 02:40:40
  • javascript globalStorage类代码

    2024-04-22 12:51:08
  • asp之家 网络编程 m.aspxhome.com