为了账号安全,请及时绑定邮箱和手机立即绑定

通过循环创建对象

通过循环创建对象

蝴蝶不菲 2022-09-13 15:13:03
我想创建一个随机用户列表,我们一个给定的数字目前我能够获得随机电子邮件的列表。我正在尝试创建一个对象用户,该对象将包含n个具有随机信息的用户。import randomimport stringdomains = ["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 usersdef 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
查看完整描述

3 回答

?
慕斯709654

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

说明

  1. 您需要保存 for 循环中创建的用户。目前,您只返回上次创建的用户。一种解决方案是在循环内定义为列表和新用户。usersappend

  2. 在电子邮件定义中,您不需要循环,因为您只需要为给定用户提供封电子邮件。您可以直接设置: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'}]


查看完整回答
反对 回复 2022-09-13
?
慕莱坞森

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


查看完整回答
反对 回复 2022-09-13
?
MM们

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()


查看完整回答
反对 回复 2022-09-13
  • 3 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号