<pre><code>class dictionary:
def _init_(self, pword=[]):
self.word = pword
</code></pre>
<p>特殊方法的名称是<code>__init__</code>,两边各有两个下划线,而不是一个下划线。因此,这将导致方法不会被自动调用,也不会初始化列表。你知道吗</p>
<p>您可以使用内置dict来模拟“dictionary”:</p>
<pre><code>class Dictionary:
def __init__(self):
self.dict = {}
def addWord (self, nword):
if nword not in self.dict:
self.dict[nword] = []
def addKey (self, nword, key):
if nword in self.dict:
self.dict[nword].append(key)
return
print('{0} was not found in the present dictionary'.format(nword))
def display (self):
if self.dict == {}:
print("Dictionary is currently Empty\n")
else:
for k, v in self.dict.items():
print('\t'.join(map(str,v)))
print()
</code></pre>
<p>实际上,您不需要<code>addWord</code>,因为只要在一个还不存在的<code>nword</code>上调用<code>addKey</code>,您就可以动态添加键。您甚至可以使用<code>defaultdict</code>使一切变得非常简单:</p>
<pre><code>import collections
class Dictionary (collections.defaultdict):
def __init__ (self):
super().__init__(list)
def display (self):
for k, v in self.items():
print('\t'.join(map(str,v)))
print()
td = Dictionary()
td['A'].append(1)
td['A'].append(2)
td['B'].append(3)
td['C'].append(1)
td['C'].append(3)
td.display()
</code></pre>