全部,
我有一本 Python 中的字典列表字典。这代表了一种父子关系。给定一个孩子,我想还给父母。
这是我的收藏:
tree = { u'one' : [ { u'two' : [ { u'three' : [] }, { u'four' : [] } ] }, { u'five' : [ { u'six' : [] } ] } ] }
如您所见,“一”有孩子“二”和“五”,“二”有孩子“三”和“四”,“三”没有孩子,依此类推。
以下代码正确计算出给定孩子的父母:
def find_parent(search_term,collection,parent=None):
if isinstance(collection,dict):
for key,value in collection.iteritems():
if key.lower() == search_term.lower():
print "the parent of %s is %s" % (key,parent)
return parent
if isinstance(value,list):
for v in value:
find_parent(search_term,v,key)
my_child = "two"
my_parent = find_parent(my_child,tree)
该函数中的 print 语句始终打印正确的值。但是如果我尝试访问 my_parent,它的值总是“无”。这里一定有什么东西超出了范围。我只是不知道如何解决它。
谢谢。