使用.iteritems()方法迭代字典时为空值

2024-09-23 06:28:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用字典时遇到了一些奇怪的问题,我试图从字典中迭代对来传递给另一个函数。迭代器的循环由于某种原因总是返回空值。在

代码如下:

  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, ['', '', '', '', '', '', '', ''])

我真的不知道发生了什么,当这个循环被执行时,没有其他事情发生。我犯过什么愚蠢的错误?在


Tags: to代码inselffor字典itemsappend
1条回答
网友
1楼 · 发布于 2024-09-23 06:28:53

假设如下:

d = {1: [1,2,3,4,54,6,7,8]}

print d.items()

for k,v in d.iteritems():
    print k, v

Output:
[(1, [1, 2, 3, 4, 54, 6, 7, 8])]
1 [1, 2, 3, 4, 54, 6, 7, 8]

您的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())))

相关问题 更多 >