我正在创建一个函数,将一些列表合并为一个字符串,并遇到以下错误。
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答案 0 :(得分:5)
如果您使用的是Python 2,则map
或dict
绑定到None
。检查代码的 rest 以获取任一名称的分配。
请注意,您可以使用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))
答案 1 :(得分:3)
如果您使用的是Python 3,那么map
的第一个参数应该是一个函数。您正在传递None
,因此它会尝试呼叫None
。这与Python 2中的不同,当None
被视为身份函数(Python's 2 map)时。
对于Python 2案例,请参阅Martijn Pieters's answer。
答案 2 :(得分:-1)
#Use Of Zip()函数
#Generate tuple
x = zip(范围(5),范围(1,20,2)) print(“Tuple:”,tuple(x))
#Generate List
x = zip(范围(5),范围(1,20,2)) print(“List:”,list(x))
#Generate dictonary
x = zip(范围(5),范围(1,20,2)) print(“Dictonary:”,dict(x))