【发布时间】:2018-07-14 16:35:29
【问题描述】:
我正在尝试输出具有唯一用户 ID 的字典列表。我正在使用以下代码来实现这一点:
import json
import random
import string
def random_string_generator(size=15, chars=string.ascii_uppercase + string.digits):
return '#' + ''.join(random.choice(chars) for _ in range(size))
list_users = ['user_id'] * 5
data = {}
list_json = []
for user in list_users:
data['user_id'] = random_string_generator() # function to generate a unique key
list_json.append(data)
print(list_json)
但是,我的代码输出如下:
[{'user_id': '#J1FTZ3TLOITMVW6'}, {'user_id': '#J1FTZ3TLOITMVW6'}, {'user_id': '#J1FTZ3TLOITMVW6'}, {'user_id': '#J1FTZ3TLOITMVW6'}, {'user_id': '#J1FTZ3TLOITMVW6'}]
我想知道为什么列表中一遍又一遍地填满相同的项目?
【问题讨论】:
-
因为它是同一个项目;你只能创建一本字典。
-
data是一本字典,您多次附加到列表并不断更新。要么创建一个副本以追加到列表中,要么每次在循环中创建一个新字典,而不是在循环之外。 -
感谢 jonsharpe 和 Martijn Pieters。您的 cmets 帮助我找出解决问题的方法。也许你们中的一个人可以写下一个答案,这样我们就可以关闭线程了?
标签: python list dictionary