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': '[email protected]', 'username': 'fjfgcfe', 'Display_Name': 'dliddfa'},
# {'email': '[email protected]', 'username': 'bkjgdfe', 'Display_Name':'ceddfce'},
# {'email': '[email protected]', 'username': 'jdekjcd', 'Display_Name': 'ijeffgi'},
# {'email': '[email protected]', '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':'[email protected]', 'username':'kgfadjb','DisplayName':'kgfadjb'},
{'email':'[email protected]', 'username':'lifjekb','DisplayName':'lifjekb'},
{'email':'[email protected]', '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()
添加回答
舉報