python collections.defaultdict() 编译错误

3 投票
1 回答
4345 浏览
提问于 2025-04-16 23:39

下面这段代码,看起来简单明了,但在编译时却出现了错误:

import string
import collections

#create dictionary with alphabets as keys, and empty values
list = ['aema', 'airplane', 'amend']

gen_dict = dict.fromkeys(string.ascii_lowercase, '')

gen_dict = collections.defaultdict(list)

for x in list:
    gen_dict['a'].append(x)

而产生的错误信息是:

Traceback (most recent call last):
  File "indexdict.py", line 14, in <module>
    gen_dict = collections.defaultdict(list)
TypeError: first argument must be callable

有什么想法吗?谢谢!

1 个回答

12

你把内部的 list 这个类型的名字给覆盖掉了,因为你在上面写了 list = ['aema', 'airplane', 'amend']。把你的 list 改个名字,比如改成 keys 或者 keylist,这样就没问题了。

所以,把

list = ['aema', 'airplane', 'amend']

替换成

keys = ['aema', 'airplane', 'amend']

然后把

for x in list:

替换成

for x in keys:

撰写回答