【问题标题】:Cannot append a list of dictionaries in a python list [duplicate]无法在 python 列表中附加字典列表[重复]
【发布时间】: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


【解决方案1】:

因为您一遍又一遍地使用相同的键 user_id 附加 dict。

所以你有字典列表。

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 2015-08-31
    • 2021-11-26
    • 1970-01-01
    • 2020-12-06
    • 2020-10-14
    • 1970-01-01
    • 2016-01-21
    • 2014-02-25
    相关资源
    最近更新 更多