Dict使用FOR LOOP

时间:2017-06-01 20:43:27

标签: python list dictionary

我对如何使用for循环创建一些dicts并将这些dicts附加到列表有点困惑。

object_1 = dict()
object_1['ID'] = 1234
object_1['NAME'] = 'ACB'
...
object_2 = dict()
object_2['ID'] = 123
object_2['NAME'] = 'ABC'
...

object_list = list()
object_list.append(object_1)
object_list.append(object_2)

我想创建 x dict对象,其中 x 是我SELECT中的行数。

cur = conn.cursor()
cur.execute("SELECT * FROM account WHERE date=current_date") 
rows = cur.fetchall()

i=0
for row in rows:
...
#What I thought
i += 1
obj_+i = dict()
obj_+i['ID'] = row[0]
....
....
obj_list = list()
obj_list.append(obj_+i)

3 个答案:

答案 0 :(得分:2)

如果我理解你的问题,这应该可以解决问题:

cur = conn.cursor()
cur.execute("SELECT * FROM account WHERE date=current_date") 
rows = cur.fetchall()

obj_list = []
for row in rows:
    d = {}
    d['ID'] = row[0]
    ...
    obj_list.append(d)

答案 1 :(得分:2)

这应该做的工作

object_list = []
for row in rows:
    object_list.append({'ID': row[0], 'NAME': row[1]})

答案 2 :(得分:1)

你不能使用字符串连接来创建这样的变量变量名 - 而且你也不需要。您可以在循环中反复重复使用相同的变量名称,并将新创建的对象添加到列表中。在循环的下一次迭代中重用相同的变量名称将不会更改先前分配给该变量的对象。

另外,请注意,您应该将列表初始化obj_list = list()移出循环,否则您将在每次迭代中重置列表。

obj_list = list()
for row in rows:
    obj = dict()
    obj['ID'] = row[0]
    ...
    obj_list.append(obj)

如果要在循环后访问列表中的各个词典,可以使用例如obj_list[0]获取obj_1obj_list[1]获取obj_2,等等。