迭代列表列表以追加值

时间:2015-03-24 20:00:26

标签: python python-2.7

我需要查询数据库,以便创建一个列表。我可以稍后重新使用我的列表,所以我将查询的值附加到我的列表中。

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吗?我正在做的事情有意义吗?

2 个答案:

答案 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 :) 希望我能理解你的问题。