将嵌套列表作为参数传递给方法

Passing nested list as an argument to a method

下面的代码工作正常

class p:
    def __init__(self):
        self.log={
            'name':'',
            'id':'',
            'age':'',
            'grade':''
        }
           
    def parse(self,line):
        self.log['id']=line[0]
        self.log['name']=line[1]
        self.log['age']=line[2]
        self.log['grade']=line[3].replace('\n',"")
        
        return self.log


obj=p()
with open(r"C:\Users\sksar\Desktop\Azure DE\Datasets\dark.csv",'r') as fp:
    line=fp.read()
data=[i.split(',') for i in line.split('\n')]
for i in data:
    a=obj.parse(i)
    print(a)

输入:

1,jonas,23,A
2,martha,23,B

输出:

{'name': 'jonas', 'id': '1', 'age': '23', 'grade': 'A'}
{'name': 'martha', 'id': '2', 'age': '23', 'grade': 'B'}

问题是:当我在循环外进行方法调用 (a=obj.parse(i)) 时,输入被覆盖并在下面给出 o/p {'name': 'martha', 'id': '2', 'age': '23', 'grade': 'B'} 只是丢失以前的记录。

如何在不必遍历嵌套循环(输入数据)并将数据提供给方法调用的情况下进行方法(解析)调用?如何在没有 for 循环的情况下获得所需的输出...

我不明白你为什么要避免显式循环。我的意思是,即使你没有在你的代码中看到它,如果有东西被迭代,某处就会有一个循环,如果是这样,"explicit is better than implicit".

无论如何,检查这个:

with open(r"C:\Users\sksar\Desktop\Azure DE\Datasets\dark.csv",'r') as fp:
  [print(obj.parse(x.split(','))) for x in fp.readlines()]