Python~访问模板类中的元组成员
我是Python新手-请提前警告 我有一个模板类,它将列表作为参数,并将列表的成员应用于模板。这是第一节课:Python~访问模板类中的元组成员,python,sqlite,dictionary,Python,Sqlite,Dictionary,我是Python新手-请提前警告 我有一个模板类,它将列表作为参数,并将列表的成员应用于模板。这是第一节课: class ListTemplate: def __init__(self, input_list=[]): self.input_list = input_list def __str__(self): return "\n".join([self._template % x for x in self.input_list]) 以
class ListTemplate:
def __init__(self, input_list=[]):
self.input_list = input_list
def __str__(self):
return "\n".join([self._template % x for x in self.input_list])
以下是模板代码/类别:
class HTML_Template(ListTemplate):
_template = """
<li>
<table width="100%%" border="0">
<tr>
<td>Title: %(title)s</td>
<td>Link: %(isbn)s</td>
</tr>
<tr>
<td>Author: %(author)s</td>
<td>Date: %(pub_date)s</td>
</tr>
<tr>
<td>Summary: %(isbn)s</td>
<td>Description: %(descr)s</td>
</tr>
</table>
<hr>
</li>"""
class HTML\u模板(ListTemplate):
_模板=“”“
标题:%(标题)s
链接:%(isbn)s
作者:%(作者)s
日期:%(发布日期)s
汇总:%(isbn)s
说明:%(说明)s
“”“
问题是:
我使用fetchall从sqlite数据库中提取数据,fetchall返回元组列表。我可以通过将模板更改为%s(而不是%(isbn)…等)将此元组列表传递给此方法,但是,我需要在模板中多次访问isbn成员。为此,我现在将元组加载到字典中,并将它们推到另一个列表中……然后传递字典列表。这让我觉得效率很低。我的问题是:您将如何重写它,以便将元组的原始列表传递给模板(从而保存一个步骤),同时仍然允许通过项[0]或类似方式访问单个成员
谢谢~
Bubnoff如果您使用的是Python2.6或更高版本,则可以使用字符串方法而不是
%
运算符。这允许您指定给定参数的索引:
>>> template = 'First value: {0}, Second value: {1}, First again: {0}'
>>> values = (123, 456)
>>> template.format(*values)
'First value: 123, Second value: 456, First again: 123'
如果使用,则可能仅对索引进行操作
但这将是可怕的破译,即使有数据库方案在手。dict方法的列表听起来更合理,除非您运行一个非常频繁访问的服务,否则对性能的影响不会太大(这取决于数据集的大小-但您不会一次获得3k 7元组,是吗?)。词典在Python中相当有效。缓存也有助于提高性能。在2.5.2中有没有办法使用“导入未来”等来实现这一点?@Bubnoff:我不知道在2.5中有什么内置方法可以实现这一点。谢谢!这对我很有用。我将研究缓存,尽管在这种情况下我并不真正需要它。顺便说一句,使用列表作为默认参数(如在
def\uu init\uuuu(self,input\u list=[]):
)通常不是一个好的步骤。看见