python defaultdict(list) IndexError: list assignment index out of range
python defaultdict(list) IndexError: list assignment index out of range
我正在尝试使用 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
我想知道这里有什么问题。
这里有一些问题:
您使用 1 作为索引值,而您的默认列表从索引 0 开始。
追加时,不需要指定索引。
最后,声明一个与内置类型同名的变量(dict
,在这种情况下)不是一个好主意,因为这通常会导致意外稍后使用内置类型时的行为。
已修改,您的代码将是:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['A'].append(1)
>>> d['A']
[1]
首先,不要使用 dict
作为名称。使用 d
这样的东西,这样你就不会掩盖内置名称 dict
.
其次,d['A'][1] = list([1])
尝试访问空列表 的索引 1
(您初始化 defaultdict
的值)和分配给它,那是不行的。
您可能正在寻找:
d = defaultdict(list)
d['A'].append(1)
我正在尝试使用 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
我想知道这里有什么问题。
这里有一些问题:
您使用 1 作为索引值,而您的默认列表从索引 0 开始。
追加时,不需要指定索引。
最后,声明一个与内置类型同名的变量(
dict
,在这种情况下)不是一个好主意,因为这通常会导致意外稍后使用内置类型时的行为。
已修改,您的代码将是:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['A'].append(1)
>>> d['A']
[1]
首先,不要使用 dict
作为名称。使用 d
这样的东西,这样你就不会掩盖内置名称 dict
.
其次,d['A'][1] = list([1])
尝试访问空列表 的索引 1
(您初始化 defaultdict
的值)和分配给它,那是不行的。
您可能正在寻找:
d = defaultdict(list)
d['A'].append(1)