通过循环创建对象

我想创建一个随机用户列表,我们一个给定的数字目前我能够获得随机电子邮件的列表。我正在尝试创建一个对象用户,该对象将包含n个具有随机信息的用户。


import random

import string

domains = ["gmail.com"]

letters = string.ascii_lowercase[:12]



def get_random_domain(domains):

    return random.choice(domains)



def get_random_name(letters, length):

    return ''.join(random.choice(letters) for i in range(length))



def generate_random_emails(nb, length):

    users = {}

    for j in range(nb):

        users = {

            'email':[get_random_name(letters, length) + '@' + get_random_domain(domains) for i in range(nb)],

            'username': get_random_name(letters, length),

            'Display_Name': get_random_name(letters, length)

        }


    return users



def main():

    print(generate_random_emails(4, 7))



if __name__ == "__main__":

    main()

它又回来了


{'email': ['kgfadjb@gmail.com', 'lifjekb@gmail.com', 'cckcbdh@gmail.com'], 'username': 'icliilf', 'DisplayName': 'efbdida'}

我想实现的是得到这样的东西


    {{'email':'kgfadjb@gmail.com', 'username':'kgfadjb','DisplayName':'kgfadjb'},

    {'email':'lifjekb@gmail.com', 'username':'lifjekb','DisplayName':'lifjekb'},

    {'email':'cckcbdh@gmail.com', 'username':'cckcbdh','DisplayName':'cckcbdh'}}

我知道我里面的循环做错了什么


generate_random_emails


蝴蝶不菲
浏览 128回答 3
3回答

慕斯709654

尝试: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 循环中创建的用户。目前,您只返回上次创建的用户。一种解决方案是在循环内定义为列表和新用户。usersappend在电子邮件定义中,您不需要循环,因为您只需要为给定用户提供一封电子邮件。您可以直接设置: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 usersprint(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'}]

慕莱坞森

您正在为 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

MM们

你不能得到这个结构:{{'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 randomimport stringdomains = ["gmail.com"]letters = string.ascii_lowercase[:12] # why only a-k? but that's your choicedef 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 usersdef main():    print(generate_random_users(4, 7))if __name__ == "__main__":    main()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python