我遇到了一个非常不寻常的问题,下面是一个类中的代码,其中pitnamebasename
是2d list。
例如:=pitnamebasename= [['a','b'],['n','m'],['b','c'],['m','f'],['c','d'],['d',''],['h','f']]
上面的列表不必按任何顺序排列,例如['d','']
可以是第0个顺序。在
这是我的函数(在类中):-
def getRole(self,pitname):
basename=pitname
print '\n\n\nbasename=',basename
ind=True
while pitname and ind:
ind=False
basename=pitname
print 'basename=',basename
for i in self.pitnamebasename:
print 'comparing-',i[0],'and',pitname
if i[0] == pitname:
pitname=i[1]
print 'newpitname=',pitname
ind=True
break
print 'returning-',basename
return basename
pitname
是字符串,例如这里可以是'a'。我希望返回值是'd'意味着遍历必须像a到b,b到c和d到None,因此返回值必须是d。
请不要向我建议任何其他解决方法。
现在我的问题是,在for循环中,它直到最后才循环,而是在中间退出。比如返回值是b或c,甚至d取决于我要搜索的内容。其实单子很长。奇怪的是,我注意到for循环只循环到它第一次循环的那个索引。就像这里第一次for循环在找到'a'时结束,pitname
变成'b',但是当它搜索'b'时,它循环到只找到'a'。有人知道这是怎么发生的吗?在
你要求解决你的问题,但我很难复制这个问题。此代码执行相同的操作,而不需要更改整个类存储系统。在
通过将列表列表转换为字典查找(如下所示)
我们可以使用dictionary方法进行默认字典查找。这将查找一个项(假设我们传递给它“a”)并返回关联的值(“b”)。如果我们查找字典中没有的内容,.get将返回第二个值(默认值),我们可以将其作为“”提供。因此_dict.获取('z','')将返回''
^{pr2}$首先,将“2d”数组更改为
^{pr2}$dict
:现在,只需简单地从一个元素遍历到另一个元素,使用与当前键关联的值作为下一个键,直到该值为空字符串;然后 返回当前密钥。如果
pitname
未能作为键存在,则将其视为确实存在并映射到空字符串。在在这种情况下,
defaultdict
也可以使用:相关问题 更多 >
编程相关推荐