列表迭代在类方法中导致python

时间:2016-03-04 12:44:43

标签: python

Hello Friends我是Python的新手,并尝试使用Python中的Classes实现一些示例代码。我可以使用单独的函数来实现,但是当我尝试通过类I进行集成时,最终会进入无限循环。

这是代码和逻辑的片段我正在阅读一个文件,内容如下:

文件input.txt内容

fruit  apple
animal cat
vehicle car

我的最终目标是将输出作为带有键和值的内容字典,如下面的dict,后来我想用键搜索并进行处理。

{'fruit': 'apple', 'animal': 'cat', 'vehicle':'car'}


class FileHandler:
    def __init__(self, dbf):

        self.logger = logging.getLogger('fileHandler')
        self.thefile = open(dbf, 'r')
        print(self.thefile)
    def __enter__(self):
        return self
    def __exit__(self,type,value,traceback):
        self.thefile.close()

with FileHandler(dbf='input.txt') as fh:
     config = [line.strip() for line in (fh.thefile.readlines())]

这是类定义:

class GetExtract:

    def __init__(self, config_list=None, config_dict=None):
        if (config_list, config_dict) is None:
            config_list = []
            config_dict = {}
        self.config_list = config_list
        self.config_dict = config_dict
    def assign_sig(self, listin):
        self.config_list = listin
        #for item in listin:
        #   self.config_list = listin.extend(item.split())
        #print("final dict is \n", self.config_list) ## break items into list
        ## Map adjacent items as key and value 
        #for index, kvalue in enumerate(self.config_list):
        #   if index %2 == 0:
        #        self.config_dict[kvalue] = self.config_list[index+1]
        #        return self.config_dict ## create a mapping inside dict

xtemp = GetExtract()
xtemp.assign_sig(config)

当我尝试使用类中的for循环进行迭代时,它会进入一个无限循环,我已经在上面的代码中进行了评论。 请告诉我如何使用课程实现我的目标。

1 个答案:

答案 0 :(得分:0)

for item in listin:
    self.config_list = listin.extend(item.split())

您正在循环的对象(在这种情况下为listin)正在循环中进行修改。 永远不要那样做。