1

我正在创建一个将几个列表合并为一个字符串的函数,并且遇到以下错误。

Traceback (most recent call last):
  File "TraditionalRoute\BioKeywords.py", line 65, in <module>
    print(PrintKeyDefs())
  File "TraditionalRoute\BioKeywords.py", line 30, in PrintKeyDefs
    defsTwo = dict(map(None, letters, defsOne))
TypeError: 'NoneType' object is not callable

我的代码如下:

# print keyword and three definitions, one of which is the correct definition
def PrintKeyDefs():
   print('\nRandomly selected keyword:',SelectKeyword(),'\n')
   # definitions below
   defsOne = []
   defsOne.append(keywords[ChosenKeyword]) # choosing the keyword
   RandDefCount = 0
   while RandDefCount < 2: # adding two random keywords to the list
      defsOne.append(keywords[random.choice(words)])
      RandDefCount += 1
   random.shuffle(defsOne) # randomizing the keywords
   letters = ['A) ','B) ','C) ']
   defsTwo = dict(map(None, letters, defsOne)) # trying to put them together in a dict. the problem is here
   defsThree = ''
   defsThree += '\n'.join(defsTwo) # changing to a string
   return defsThree

任何人都可以提出一个可能的解决方案,因为我已经花了很长时间在这方面并且还没有弄清楚。谢谢。

编辑:忘了提到我正在使用 Python 3

4

3 回答 3

6

如果您使用的是 Python 2,则要么 要么map绑定dictNone. 检查代码的其余部分是否分配给任一名称。

请注意,map(None, iterable1, iterable2)您可以使用而不是zip(iterable1, iterable2)获得相同的输出。

如果您使用的是 Python 3,则该map()方法不支持作为None第一个参数:

>>> list(map(None, [1], [2]))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

你当然想在zip()那里使用:

defsTwo = dict(zip(letters, defsOne))
于 2013-11-13T12:58:56.140 回答
3

如果您使用的是 Python 3,那么第一个参数map应该是一个函数。你正在通过None,所以它试图调用 a None。这与 Python 2 中的不同,后者None被视为标识函数(Python 的 2 映射)。

对于 Python 2 案例,请参阅Martijn Pieters 的回答

于 2013-11-13T12:59:54.100 回答
-1

#Zip()函数的使用

#生成元组

x=zip(范围(5),范围(1,20,2))打印(“元组:”,元组(x))

#生成列表

x=zip(范围(5),范围(1,20,2))打印(“列表:”,列表(x))

#生成字典

x=zip( range(5), range(1,20,2) ) print("字典:",dict(x))

于 2015-08-18T13:28:34.183 回答