![](/img/trans.png)
[英]'collections.defaultdict' object has no attribute 'append'
[英]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'對象不可調用
myList的數據類型為list
。 絕對不能將其用作字典的鍵。 拇指法則是鍵應該是可哈希的,因此我們將字典鍵用作immutable
string
, numbers
或tuples
。
如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.