我試圖在索引中打印對象時發生此錯誤..我正在嘗試搜索lname並打印其對象值...TypeError:'collections.defaultdict'對象不可調用
from collections import defaultdict
class Pbook(object):
lname_index = defaultdict(list)
def __init__(self, lname, fname, age):
self.lname=lname
self.fname=fname
self.age=age
Pbook.lname_index[lname].append(self)
def __str__(self):
return "%s %s %s" % (self.lname, self.fname, self.age)
myList = []
myList.append(Pbook("john","smith",23))
myList.append(Pbook("george","bush",25))
print Pbook.lname_index
defaultdict(, {'bush': [<main.Pbook object at 0x000000000585EC50>], 'smith': [<main.Pbook object at 0x000000000585EC88>]})
if "bush" in Pbook.lname_index:
print "found"
發現
if "bush" in Pbook.lname_index:
print Pbook.lname_index(myList)
TypeError: 'collections.defaultdict' object is not callable
這本字典是不可調用的,因爲如果你使用'd.get你不能另一方面使用以下語法'd()'(注意圓括弧) ()'那麼函數是可調用的。我感到困惑的是,'myList'是什麼?因爲我認爲它必須是該字典的關鍵? – Chinny84
僅供參考 - 'defaultdict(list)'基本上是說當你試圖使用一個不存在於dict(d)中的關鍵字時,你將創建一個鍵值對''('new_key',[])''除了defaultdict對象的創建之外,您沒有在該列表中傳入該列表。 – Chinny84