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