Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中导致无限循环的类内列表迭代方法_Python - Fatal编程技术网

python中导致无限循环的类内列表迭代方法

python中导致无限循环的类内列表迭代方法,python,Python,朋友们好,我是Python的新手,尝试用Python中的类实现一些示例代码。我可以使用单个函数实现,但当我试图通过类进行集成时,我最终会陷入无限循环 下面是我正在阅读的代码和逻辑片段,其中的内容如下: 文件输入.txt内容 我的最终目标是以字典的形式输出包含关键字和值的内容,如下面的dict,然后我想用关键字进行搜索并进行处理 {'fruit': 'apple', 'animal': 'cat', 'vehicle':'car'} class FileHandler: def __i

朋友们好,我是Python的新手,尝试用Python中的类实现一些示例代码。我可以使用单个函数实现,但当我试图通过类进行集成时,我最终会陷入无限循环

下面是我正在阅读的代码和逻辑片段,其中的内容如下:

文件输入.txt内容 我的最终目标是以字典的形式输出包含关键字和值的内容,如下面的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
循环进行迭代时,它进入了一个无限循环,我在上面的代码中对此进行了注释。 请告诉我如何使用课堂来实现我的目标

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

正在循环的对象(在本例中为
listin
)正在循环中修改永远不要这样做。

您会不断地将项目添加到正在迭代的列表中。当然,这会导致无限循环。你能告诉我如何克服这个问题吗?下面的代码适用于我吗?这个代码适用于所有情况吗?def assign_sig(self,listin):signals=[]signal_dic={}用于listin:signals.extend(item.split())print(“final dict is\n”,signals)用于索引,枚举中的kvalue(signals):如果索引%2==0:signal_dic[kvalue]=signals[index+1]print(“最后的dic项目是”,signal_dic)@Bhaskarvedula在评论中编写代码是行不通的。如果你想澄清你的问题,请编辑它(我不认为更多的代码会澄清任何事情)。如果你还有其他问题,请问另一个问题。
for item in listin:
    self.config_list = listin.extend(item.split())