Skip to main content
 首页 » 编程设计

python之为什么 defaultdict 为我的值创建一个数组

2025年05月04日10www_RR

我正在从数组的数组中创建一个 defaultdict:

>>> array = [['Aaron','1','2'],['Ben','3','4']] 
>>> d = defaultdict(list) 
>>> for i in array: 
...     d[i[0]].append({"num1":i[1],"num2":i[2]}) 

我的预期结果是:

>>> d 
defaultdict(<type 'list'>, {'Aaron': {'num1': '1', 'num2': '2'},  
'Ben': {'num1': '3', 'num2': '4'}}) 

但我的结果是:

>>> d 
defaultdict(<type 'list'>, {'Aaron': [{'num1': '1', 'num2': '2'}],  
'Ben': [{'num1': '3', 'num2': '4'}]}) 

就好像 defaultdict 试图将我的值保存在一个数组中,因为那是源列表!

任何人都知道这里发生了什么以及我如何才能得到预期的结果?

请您参考如下方法:

当你调用它时:

d = defaultdict(list) 

这意味着如果您尝试访问 d['someKey'] 但它不存在,则 d['someKey'] 将通过调用 进行初始化list() 没有参数。所以你最终得到一个空列表,然后将字典附加到该列表。你可能想要这个:

d = defaultdict(dict) 

然后是:

for a, b, c in array:  
  d[a].update({"num1": b, "num2": c})