Python词典

使用dict.fromkeys()创建词典的一个坑

创建词典有三种方法,第一是直接赋值,d = {1:2, 2:3};第二个是,通过构造方法,d = dict([(1, 2), (2, 3)]),第三个就是类方法dict.fromkeys()

fromkeys(iterable[, value]允许我们通过指定key来快捷创建字典,value默认为None。当然也可以自己指定,但是如果是一个可变数据类型,需要注意的是,所有的value都会指向同一个实例

解决办法就是,使用词典生成式。

d = {1:2, 2:3, 3:4}

c1 = dict.fromkeys(d, [])
c11 = dict.fromkeys(d, list())
c2 = {key: [] for key in d}

c1[1].append(1)  # {1: [1], 2: [1], 3: [1]}
c11[1].append(1)  # {1: [1], 2: [1], 3: [1]}
c2[1].append(1) # {1: [1], 2: [], 3: []}

词典的key到底有序还是无序?

按照常规理解,词典的key构成集合,按道理是无序的。但是从python 3.7开始,词典的key变成有序的了,它会保持插入的顺序(不用再去使用collections.OrderedDict了)!甚至在python 3.8版本中,python字典的key还可以反转:reversed(d)

原文地址:https://www.cnblogs.com/YoungF/p/13490739.html