有个不定长的列表,想把列表中的每一个值当作字典的key, 初始值为空列表,因而想到了fromkeys这个方法
app
In [337]: l = ['a','b','c'] In [338]: res = dict.fromkeys(l, []) In [339]: res Out[339]: {'a': [], 'b': [], 'c': []} In [340]: res['a'].append(123) In [341]: res Out[341]: {'a': [123], 'b': [123], 'c': [123]}
看,问题出现了,原本只想给res['a']赋值,结果全部的键值对都被赋值了,这是由于,用fromkeys设置默认值的时候,若是值是[], 表示的是一个对象,而且是同一个对象,就和函数的默认参数设置成空列表是一个意思函数
改为这样的话就没问题spa
In [342]: res = {'a': [], 'b': [], 'c': []} In [343]: res['a'].append(123) In [344]: res Out[344]: {'a': [123], 'b': [], 'c': []}
可是这种没办法处理不定长的列表了
还要一种方法:code
In [347]: res = dict([(k, []) for k in l]) In [348]: res Out[348]: {'a': [], 'b': [], 'c': []} In [349]: res['a'].append('14124') In [350]: res Out[350]: {'a': ['14124'], 'b': [], 'c': []}