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 方法浅层拷贝这个对象放到字典中了,因此,这样的结果也在预料之中,以上。

原文地址:https://www.cnblogs.com/shi-win-snoopy/p/13532586.html