我正在从数组的数组中创建一个 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})
