我需要生成一系列简单对象的导出(csv),如下所示:
__dict__
按属性按顺序列出属性/值对的最简单方法是什么? sampleWindow.attron(curses.A_REVERSE |
curses.color_pair(color_pair_number))
sampleWindow.addstr(begin_y + 3,
begin_x + 48,
' ')
sampleWindow.attroff(curses.A_REVERSE |
curses.color_pair(color_pair_number))
每次都会更改订单。
答案 0 :(得分:2)
您可以在vars()
上使用self
,然后对项目进行排序:
sorted(vars(self).items())
然后,它会为您提供(attributename, value)
对的排序列表。
但是,如果您的课程仅仅是4个相关数据点的容器,那么请考虑使用namedtuple
class:
from collections import namedtuple
TRX = namedtuple('TRX', ('file_name', 'bank', 'trans_type', 'account'))
这将按命名顺序列出属性:
>>> from collections import namedtuple
>>> TRX = namedtuple('TRX', ('file_name', 'bank', 'trans_type', 'account'))
>>> TRX('foo.txt', 'Bar PLC', 'withdrawal', '1234xyz')
TRX(file_name='foo.txt', bank='Bar PLC', trans_type='withdrawal', account='1234xyz')
因为实例是序列(实际上是tuple
的子类),所以您可以将它们直接传递给csv.writer().writerow()
call;同时,您可以使用instance.bank
或instance.file_name
来访问字段。
另一种方法是使用词典,并使用csv.DictWriter()
来处理顺序(fieldnames
参数确定顺序)。