【发布时间】:2018-11-08 21:37:35
【问题描述】:
这是我的代码:
class member:
def __init__(self, name):
self.name = name
def get_name(self, name):
self.name = name
def __str__(self):
return self.name
class create_graph:
def __init__(self):
self.some_dict = dict()
def add(self, name):
if name is None:
raise TypeError
print(name not in self.some_dict)
if name not in self.some_dict:
self.some_dict[name] = []
else:
print(str(name) + "is already present")
def link(self, p1, p2):
if p1 in self.some_dict:
self.some_dict[p1].append(p2)
else:
self.some_dict[p1] = [p2]
some_graph = create_graph()
list_person = ['abc', 'xyz', 'mno', 'pqr']
for person in list_person:
some_graph.add(member(person))
print(len(some_graph.some_dict))
for i in range(len(list_person)-1):
some_graph.link(i,i+1)
print(len(some_graph.some_dict))
我无法在此代码中找到错误。 调用 add 函数时,我收到 True 消息,表明它已添加。第一个打印语句打印键数为 4,但添加链接后,键数为 7。 即使添加了链接,我也希望只有 4 个。
感谢您的帮助!
【问题讨论】:
-
提示:尝试打印
some_graph.some_dict -
您将
member类的实例存储在some_dict中,但是您随后尝试在该字典中查找字符串(名称)。member("bob")与"bob"不一样,更进一步member("bob") != member("bob");它们将是具有相同名称的不同实例。 -
@mad_ 我尝试过测试。它确实给了我正确的结果。 {pqr: [], xyz: [], abc: [], mno: []}。但是,我的错误仍然存在。
标签: python dictionary graph key-value