6 回答
TA贡献1852条经验 获得超7个赞
你只有一个字典,你不断覆盖它的键id,在循环中创建字典
my_list = []
for i in range(3):
my_dict = {}
my_dict['id'] = str(i)
my_list.append(my_dict) # can shorten in my_list.append({'id' : str(i)})
可以通过列表理解来缩短
my_list = [{'id' : str(i)} for i in range(3)]
TA贡献1878条经验 获得超4个赞
理念:
列表存储对对象 ( ) 的引用my_dict,因此无论何时更改其中的任何内容my_dict都会反映在列表 ( my_list)中
代码:
my_list = []
for i in range(3):
my_list.append({'id' : str(i + 1)})
print(my_list)
输出:
[{'id': '1'}, {'id': '2'}, {'id': '3'}]
TA贡献1876条经验 获得超5个赞
这是我的解决方案:
my_list = []
for i in range(1, 4): # If you put range(3), you'll get [{'id': '0'}, {'id': '1'}, {'id': '2'}]
my_dict = {}
my_dict['id'] = str(i)
my_list.append(my_dict)
print(my_list)
更短的方法可能是:
my_list = []
for i in range(1, 4):
my_list.append({'id' : str(i)})
print(my_list)
TA贡献2011条经验 获得超2个赞
该my_dict实例是在 for 循环之外声明和分配的,因此您要添加到my_list字典的同一实例中。
您需要为每个循环创建一个新的字典实例:
my_list = []
for i in range(3):
my_dict = {}
my_dict['id'] = str(i)
my_list.append(my_dict)
这段代码有很多可能的优化方式:
my_list = []
for i in range(3):
my_list.append({'id': str(i)})
最好的 pythonic 方式是列表理解:
my_list = [{'id' : str(i)} for i in range(3)]
TA贡献1886条经验 获得超2个赞
my_list = []
for i in range(0,3):
my_dict = {} # making dictionary every time when running the loop.
my_dict['id'] = str(i) # assigning value
my_list.append(my_dict) #appending in list
my_list
TA贡献1864条经验 获得超6个赞
是的,字典是通过引用传递的;所有对象都在 Python 中。横向当然是按价值传递的。
如果将字典直接附加到列表中,代码可以按预期工作,如下所示:
my_list = []
for i in range(3):
my_list.append({'id': str(i)})
可以按照@Yusef Maali 的建议进行改进:
my_list = [{'id' : str(i)} for i in range(3)]
添加回答
举报