我需要查询数据库,以便创建一个列表。我可以稍后重新使用我的列表,所以我将查询的值附加到我的列表中。
item_details = [
['name', 'detail'],
['name', 'detail']
]
counter = 0
for item_detail in item_details:
database_query = # Database query code
item_details[counter].append(database_query.value)
counter += 1
效率这么高吗?这是pythonic吗?我正在做的事情有意义吗?
答案 0 :(得分:0)
您的代码有一些我可以看到的问题。
请勿使用手动计数器。它容易出错,enumerate()
可以完美地完成工作。
for name in item_details:
在这种情况下,name
已经(引用)内部列表。所以name
在这里不是一个非常好的变量名。我也不确定,为什么你要
item_details[counter].append(database_query.value)
因为这与简单陈述
相同name.append(database_query.value)
总而言之:
for i, item_detail in enumerate(item_details):
database_query = # Database query code, hopefully needs i
item_detail.append(database_query.value)
甚至
for item_detail in item_details:
database_query = # Database query code
item_detail.append(database_query.value)
如果不需要索引。
此外,您可以考虑不使用列表列表,而是使用词典列表,以便您可以按名称识别各个项目。目前,您可以通过索引位置识别它们,如果添加更多数据,可能会造成混淆。
答案 1 :(得分:0)
所以你在每个子列表中都有[name,detail],并且你试图将每个子列表添加到database_querry中?你应该试试:
for index, name in enumerate(item_details):
database_query = # Database query code
item_details[index].append(database_query.value)
因为计数器通常不是pythonic,除非它们是collections.Couter :) 希望我能理解你的问题。