Dict使用FOR循环

2024-04-26 21:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

对于如何使用for循环创建大量dict并将这些dict附加到列表中,我有点困惑。你知道吗

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)

我想创建xdict对象,其中x是我选择的行数。你知道吗

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)

Tags: nameidobj列表fordateobjectdict
3条回答

如果我正确理解了你的问题,这应该可以做到:

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)

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

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

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

如果要访问循环后列表中的各个词典,可以使用obj_list[0]获取obj_1,使用obj_list[1]获取obj_2,依此类推。你知道吗

这就行了

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

相关问题 更多 >