字典中存在一些奇怪的問題,我試圖從字典中迭代對傳遞給另一個函數。儘管由於某種原因,迭代器的循環總是返回空值。使用.iteritems()方法迭代字典時出現空值
下面是代碼:
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()))
現在,如果我插入上面的印刷線循環:
matchlist = []
print self.ToBeMatchedTable.items()
for k,v in self.ToBeMatchedTable.iteritems():
matchlist.append(k, linkworker.GetBestMatch(v, self.CentralDataTable.items()))
我得到的應該是印刷出來的字典中的數據。字典的值是列表對象。一個例子元組印刷正上方的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?另外,.iteritems()現在已被棄用,應該用簡單的.items()來替換。 for k,v in d.items():pass – bcollins
你能提供一個完整的例子嗎? – longhua
@bcollins不推薦使用 - 在Python 3.x中不需要它 - 它在2.x中保持完全有效,其中將其切換到items()與Python 3.x版本完全不同 –