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

 更新时间:2020年02月13日 15:38:44   投稿:WDC  
这篇文章主要介绍了Python创建空列表的字典2种方法详解,需要的朋友可以参考下

如果要在 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( )把这一个对象的浅拷贝放在字典里了。

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

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

相关文章

  • python爬取各省降水量及可视化详解

    python爬取各省降水量及可视化详解

    本文是学习python,故选取了python最常用的爬虫作为实操训练同时,还添加了可视化和GUI入门的内容使爬取的内容应用更丰富,需要的朋友可以参考下
    2021-04-04
  • Django的用户模块与权限系统的示例代码

    Django的用户模块与权限系统的示例代码

    这篇文章主要介绍了Django的用户模块与权限系统的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python函数中的可变长参数详解

    Python函数中的可变长参数详解

    在本篇文章里小编给大家整理的是关于Python函数中的可变长参数的相关知识点内容,有需要的朋友们参考下。
    2019-09-09
  • 学python爬虫能做什么

    学python爬虫能做什么

    这篇文章主要介绍了学python爬虫能做什么的相关知识点内容,有需要的朋友们可以阅读参考下。
    2020-07-07
  • 利用python将json数据转换为csv格式的方法

    利用python将json数据转换为csv格式的方法

    下面小编就为大家分享一篇利用python将json数据转换为csv格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Python文本处理之按行处理大文件的方法

    Python文本处理之按行处理大文件的方法

    下面小编就为大家分享一篇Python文本处理之按行处理大文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python自动zip压缩目录的方法

    python自动zip压缩目录的方法

    这篇文章主要介绍了python自动zip压缩目录的方法,可实现调用zip.exe文件进行目录压缩的功能,需要的朋友可以参考下
    2015-06-06
  • Python实现一个论文下载器的过程

    Python实现一个论文下载器的过程

    这篇文章主要介绍了Python实现一个论文下载器的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Python中如何用Matplotlib绘制多图并合并展示

    Python中如何用Matplotlib绘制多图并合并展示

    这篇文章主要介绍了Python中如何用Matplotlib绘制多图并合并展示问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python实现画圆功能

    python实现画圆功能

    这篇文章主要为大家详细介绍了python实现画圆功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论