python collection.defaultdict () ошибка компиляции - PullRequest
3 голосов
/ 16 августа 2011

Следующий код, достаточно простой и понятный, выдает ошибку при компиляции:

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 голосов
/ 16 августа 2011

вы перезаписываете внутреннее list, являющееся именем типа, с вашим list = ['aema', 'airplane', 'amend'] выше. Переименуйте ваш list, например, в. keys или keylist и все будет хорошо.

Так замените

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

с

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

и

for x in list:

с

for x in keys:
...