zoukankan      html  css  js  c++  java
  • python 创建一个键值为空列表的字典对象

    前言

      python中字典是一个非常常用的存储容器,有时候根据特定的需要需要创建一些特殊容器。这里记录一下value是一个列表的构造方法。

    1、先来使用字典构造函数 dict() ,构造一个普通的字典:

    1 # 创建单值字典
    2 keys = ['A', 'E', 'I', 'O', 'U']
    3 values = [1, 2, 3, 4, 5]
    4 dict1 = dict(zip(keys, values))
    5 print(dict1)

    其输出结果为:

    1 {'A': 1, 'E': 2, 'I': 3, 'O': 4, 'U': 5}

    2、使用dict()构造一个我们需要的特殊类型的字典:

    # 字典构造器
    key = [1, 2, 3, 4]
    a = dict([(k, []) for k in key])
    print(a)

    输出结果为:

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

    3、使用 fromkeys 方法:

    key = [1, 2, 3, 4]
    # 使用 fromkeys()
    b = {}.fromkeys(key, [])
    print(b)

    输出为:

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

    使用dict ()方法和 fromkeys()方法看起来结果是一样的,但是,在分别往这两个字典添加一些值,其输出结果如下:

    print('-'*20)
    a[1].append(123)
    print(a)
    
    b[1].append(123)
    print(b)
    
    
    --------------------
    a:{1: [123], 2: [], 3: [], 4: []}
    b:{1: [123], 2: [123], 3: [123], 4: [123]}

    从输出结果可以看出第二种方法构造出来的字典所有的列表实际上是同一个对象;就体现在我们在使用 fromkeys 方法时的确只提供了一个列表对象,fromkeys 方法浅层拷贝这个对象放到字典中了,因此,这样的结果也在预料之中,以上。

  • 相关阅读:
    Java反编译代码分析(一)
    Java信号量Semaphore
    Ubuntu SVN安装&使用&命令
    Android -- Dialog动画
    Android -- EventBus使用
    Android -- queryIntentActivities
    解决:fatal: authentication failed for https
    MySQL表名大小写敏感导致的问题
    Publish to a Linux Production Environment
    layer.js 弹窗组件API文档
  • 原文地址:https://www.cnblogs.com/shi-win-snoopy/p/13532586.html
Copyright © 2011-2022 走看看