目前我有这个
def convert_tuple(self, listobj, fields=None):
return [(obj.start, obj.end) for obj in listobj]
但我已经对这些字段进行了硬编码。
我希望将字段作为另一个列表,如
def convert_tuple(self, listobj, fields=['start', 'end', 'user']):
return [(obj.field) for obj in listobj for field in fields]
我该如何实现
预期输出
[('2am', '5am', 'john'), ('3am', '5am', 'john1'), ('3am', '5am', 'john2') ]
其中2am开始,凌晨5点结束,john是用户名
答案 0 :(得分:2)
您可以利用python builtin getattr以及嵌套列表理解来实现您的设想。
def convert_tuple(self, listobj, fields=['start', 'end', 'user']):
return [(getattr(obj, field) for field in fields)
for obj in listobj]
值得注意的是,你的理解是笛卡尔积而不是嵌套理解