我在使用字典时遇到了一些奇怪的问题,我试图从字典中迭代对来传递给另一个函数。迭代器的循环由于某种原因总是返回空值。在
代码如下:
def LinktoCentral(self, linkmethod):
if linkmethod == 'sim':
linkworker = Linker.SimilarityLinker()
matchlist = []
for k,v in self.ToBeMatchedTable.iteritems():
matchlist.append(k, linkworker.GetBestMatch(v, self.CentralDataTable.items()))
现在,如果在for循环上方插入打印行:
^{pr2}$我把应该在字典里的数据打印出来。字典的值是列表对象。在for循环的正上方打印时,我从字典中得到一个元组示例:
>>> (1, ['AARP/United Health Care', '8002277789', 'PO Box 740819', 'Atlanta', 'GA','30374-0819', 'Paper', '3676'])
但是,for循环给linkworker.GetBestMatch方法。如果我在for循环下面放一条打印线,我得到的结果是:
代码:
matchlist = []
for k,v in self.ToBeMatchedTable.iteritems():
print self.ToBeMatchedTable.items()
matchlist.append(k, linkworker.GetBestMatch(v, self.CentralDataTable.items()))
## Place holder for line to send match list to display window
return matchlist
第一次迭代的结果:
>>> (0, ['', '', '', '', '', '', '', ''])
我真的不知道发生了什么,当这个循环被执行时,没有其他事情发生。我犯过什么愚蠢的错误?在
假设如下:
您的},当你试图访问它时,
它以随机的方式工作
self.ToBeMatchedTable
的键和值超过one pair
通常Python dictionaries
是{在您的情况下:
有一个像
(0, ['', '', '', '', '', '', '', ''])
的键值对,所以第二次,您得到了这个!在您的代码似乎有问题:
matchlist.append(k, linkworker.GetBestMatch(v, self.CentralDataTable.items()))
我已经模拟了类似于上面这条线的东西
^{pr2}$请尝试对
matchlist.append(...)
行进行注释或修改:matchlist.append((k, linkworker.GetBestMatch(v, self.CentralDataTable.items())))
相关问题 更多 >
编程相关推荐