3 回答

TA贡献1840条经验 获得超5个赞
尝试:
def generate_random_emails(nb, length):
users = []
for j in range(nb):
users.append({
'email': get_random_name(letters, length) + '@' + get_random_domain(domains),
'username': get_random_name(letters, length),
'Display_Name': get_random_name(letters, length)
})
return users
说明:
您需要保存 for 循环中创建的用户。目前,您只返回上次创建的用户。一种解决方案是在循环内定义为列表和新用户。
users
append
在电子邮件定义中,您不需要循环,因为您只需要为给定用户提供一封电子邮件。您可以直接设置:
for
'email': get_random_name(letters, length) + '@' + get_random_domain(domains)
完整代码
def generate_random_emails(nb, length):
# Users output
users = []
# For desired number of users
for j in range(nb):
# Add one user with :
# - 1 email
# - 1 username
# - 1 display_name
users.append({
'email': get_random_name(letters, length) + '@' + get_random_domain(domains),
'username': get_random_name(letters, length),
'Display_Name': get_random_name(letters, length)
})
return users
print(generate_random_emails(4, 7))
# [{'email': 'icljiba@gmail.com', 'username': 'fjfgcfe', 'Display_Name': 'dliddfa'},
# {'email': 'ekfjjei@gmail.com', 'username': 'bkjgdfe', 'Display_Name':'ceddfce'},
# {'email': 'ceackac@gmail.com', 'username': 'jdekjcd', 'Display_Name': 'ijeffgi'},
# {'email': 'gejkcck@gmail.com', 'username': 'adgieki', 'Display_Name': 'idacgci'}]

TA贡献1810条经验 获得超4个赞
您正在为 for 循环中的同一变量分配新值,而不是将其追加到列表中,然后返回该列表。users
请考虑以下情况:
def generate_random_emails(nb, length):
users = []
for j in range(nb):
user = {
'email': get_random_name(letters, length) + '@' + get_random_domain(domains),
'username': get_random_name(letters, length),
'Display_Name': get_random_name(letters, length)
}
users.append(user)
return users
您还将为单个用户生成三个随机名称。我不知道这是否是你的意图,但也许你想生成一个随机名称,并在 中使用它。emailusernameDisplay_Name

TA贡献1886条经验 获得超2个赞
你不能得到这个结构:
{{'email':'kgfadjb@gmail.com', 'username':'kgfadjb','DisplayName':'kgfadjb'},
{'email':'lifjekb@gmail.com', 'username':'lifjekb','DisplayName':'lifjekb'},
{'email':'cckcbdh@gmail.com', 'username':'cckcbdh','DisplayName':'cckcbdh'}}
因为它是一组字典。或者,如果命令是可散列的。只有可哈希对象才能是集合的元素。但是,您可以拥有一个词典列表:
import random
import string
domains = ["gmail.com"]
letters = string.ascii_lowercase[:12] # why only a-k? but that's your choice
def get_random_domain(domains):
return random.choice(domains)
def get_random_name(letters, length):
return ''.join(random.sample(letters, length))
def get_random_email(letters, length):
return get_random_name(letters, length) + '@' + get_random_domain(domains)
def generate_random_users(nb, length):
users = [
{'email': get_random_email(letters, length)
'username': get_random_name(letters, length),
'Display_Name': get_random_name(letters, length)
} for j in range(nb)
]
return users
def main():
print(generate_random_users(4, 7))
if __name__ == "__main__":
main()
添加回答
举报