我正在尝试使用defaultdict(list)
,
dict = defaultdict(list)
dict['A'][1] = [1]
或
dict['A'][1] = list([1])
我收到了错误,
IndexError: list assignment index out of range
如果我这样做
dict['A'][1].append(1)
IndexError: list index out of range
我想知道这里有什么问题。
答案 0 :(得分:4)
这里有一些问题:
您使用1作为索引值,而默认列表则从索引0开始。
当您追加时,您不需要指定索引。
最后,声明一个与内置类型(dict
同名)的变量并不是一个好主意,因为这通常会导致意外稍后您将使用内置类型的行为。
修改后,您的代码将是:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['A'].append(1)
>>> d['A']
[1]
答案 1 :(得分:2)
首先,不要使用dict
作为名称。使用d
之类的内容,这样就不会屏蔽内置名称dict
。
其次,d['A'][1] = list([1])
尝试访问空列表的索引1
(初始化defaultdict
的值)并分配给它,那是一个禁忌。
您可能正在寻找:
d = defaultdict(list)
d['A'].append(1)