【问题标题】:Append class records to a list将课程记录附加到列表
【发布时间】:2019-09-29 17:45:47
【问题描述】:

我在一个类中加载一行数据,逐行循环。我想将每一行附加到一个列表中。

class Biz:
def __init__(self, dba_name, legal_name):
    self.dba_name = dba_name
    self.legal_name = legal_name

MasterList = []

File_From_Excel = pd.read_excel('C:\file.xlsx')

for index, row in File_From_Excel.iterrows():
    record = Biz(row['Field 1'], row['Field 2'])
    MasterList.append(record)
    print(MasterList)

当我运行这样的代码时,我没有收到错误消息,但我会打印出这样的信息: "[ma​​in.Biz object at 0x0C11BFB0>, ma​​in.Biz object at 0x00BDED50>]"

我是一个新手,我还没有想出如何克服这个问题。谢谢!

【问题讨论】:

  • 这看起来不错。 “Biz”对象排列在一个列表中。但是您可能希望发生一些不同的事情。这是什么?
  • 谢谢。使用最后一行的打印命令,我希望看到值。我只看到这个“<__main__.biz object at>”

标签: python list class


【解决方案1】:

您正在打印一个类实例列表,因此输出是它们的内存地址。相反,您可能想要的是这些实例的属性。可以按如下方式实现(用于说明目的):

# this goes at the end of your code, outside of the loop!
print([[record.dba_name, record.legal_name] for record in MasterList])

这种方法绝不是最佳的,如果MasterList 中有很多元素,它会给您带来内存问题。在这种情况下,您可能希望使用生成器或类迭代器。

编辑:想一想,这里不需要生成器,因为一个简单的 for 循环可以遍历列表:

for record in MasterList:
  print([record.dba_name, record.legal_name], end=' ')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多