前言
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 方法淺層拷貝這個對象放到字典中了,因此,這樣的結果也在預料之中,以上。