Python创建空列表的字典2种方法详解


Posted in Python onFebruary 13, 2020

如果要在 Python 中创建键值是空列表的字典,有多种方法,但是各种方法之间是否由区别?需要作实验验证,并且分析产生的原因。本文针对两种方法做了实验和分析。

如果要在 Python 中创建一个键值都是列表的字典,类似下面这样,该怎么做?

{1:[], 2:[], 3:[], 4:[]}

方法1,字典构造器

用 dict 构造器生成,构造(key,value)对

> key = [1, 2, 3, 4]
> a = dict([(k,[]) for k in key])
> a
{1: [], 2: [], 3: [], 4: []}

方法2,使用 fromkeys()

用字典的方法fromkeys(key list, default value)

> key = [1, 2, 3, 4]
> b = {}.fromkeys(key,[])
> b
{1: [], 2: [], 3: [], 4: []}

结果对比

这两种方法生成的字典有没有区别?检验一下:

> a[1].append(1)
> a
{1: [1], 2: [], 3: [], 4: []} # 仅影响对应的键值列表
>
> b[1].append(1)
> b
{1: [1], 2: [1], 3: [1], 4: [1]} # 所有键值列表都受影响

上面的结果中,发现使用 fromkeys() 方法生成的空列表,都增加了一个元素。似乎他们是同一个对象。

原因分析

从上面看出,用fromkeys( )方法生成的字典里的空列表其实是同一个对象。为什么会这样?因为传给fromkeys( )函数的参数”[]“是同一个对象,fromkeys( )把这一个对象的浅拷贝放在字典里了。

Python创建空列表的字典2种方法详解

如果这个对象是 mutable 的,就会在后续的操作中出问题。如果创建字典的对象是mutable的,应该避免使用fromkeys( )

更多关于Python创建空列表的字典方法请查看下面的相关链接

Python 相关文章推荐
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
Python OpenCV获取视频的方法
Feb 28 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
python for 循环获取index索引的方法
Feb 01 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
python中append实例用法总结
Jul 30 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
Python错误的处理方法
Jun 23 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
Python pip 常用命令汇总
Oct 19 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 #Python
Python 实现向word(docx)中输出
Feb 13 #Python
Python如何把多个PDF文件合并代码实例
Feb 13 #Python
python读取csv文件指定行的2种方法详解
Feb 13 #Python
Python类中self参数用法详解
Feb 13 #Python
python字符串下标与切片及使用方法
Feb 13 #Python
python时间与Unix时间戳相互转换方法详解
Feb 13 #Python
You might like
ajax 的post方法实例(带循环)
2011/07/04 PHP
PHP实现百度人脸识别
2019/05/06 PHP
javascript的console.log()用法小结
2012/05/31 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
python制作一个桌面便签软件
2015/08/09 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python callable()函数用法实例分析
2018/03/17 Python
python如何定义带参数的装饰器
2018/03/20 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python去除文件中重复的行实例
2018/06/29 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
一套带答案的C++笔试题
2014/01/10 面试题
介绍一下Python下range()函数的用法
2013/11/07 面试题
面试求职的个人自我评价
2013/11/16 职场文书
项目总经理岗位职责
2014/02/14 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
程序员求职信
2014/04/16 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
信息简报范文
2015/07/21 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书