簡體   English   中英

TypeError:'collections.defaultdict'對象不可調用

[英]TypeError: 'collections.defaultdict' object is not callable

當我嘗試在索引中打印對象時出現此錯誤。我想要做的是搜索lname並打印其對象值...

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':[< 主要的 .Pbook對象在0x000000000585EC50>],'smith':[< 主要的 .Pbook對象在0x000000000585EC88>]})

if "bush" in Pbook.lname_index:
    print "found"

發現

if "bush" in Pbook.lname_index:
    print Pbook.lname_index(myList)

TypeError:'collections.defaultdict'對象不可調用

  1. myList的數據類型為list 絕對不能將其用作字典的鍵。 拇指法則是鍵應該是可哈希的,因此我們將字典鍵用作immutable stringnumberstuples

  2. 如dict所指出的,應使用[].get()進行訪問。

樣例代碼

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.get("john")
print Pbook.lname_index.get("george")
print Pbook.lname_index.get("bush", None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM