python - 我需要在 Python 中生成 1000 个唯一的名字

标签 python

我需要生成 1000 个唯一的名字并将它们存储在一个列表中。
我正在使用 Python faker,但得到了很多重复的值。

import random
from random import shuffle
from faker import Faker

fake = Faker()
fake.random.seed(4321)  

first_n=[]
for i in range(1000):
    name=fake.first_name()
    if name in first_n:
        first_n.append("Repeat")
    else:
        first_n.append(name)

谢谢你的帮助。

最佳答案

不是生成随机值然后检查它们是否唯一,而是检索存储在您正在使用的提供程序中的名称列表,将它们打乱并返回前 1000 个。这样您就根本不会遇到冲突。在 en 中定义了大约 7k 个名字提供者,而其他语言可能要少得多 - 当您进一步进入序列时,使冲突变得相当确定。

from random import shuffle, seed
from faker.providers.person.en import Provider

first_names = list(set(Provider.first_names))

seed(4321)
shuffle(first_names)

print(first_names[0:1000])

关于python - 我需要在 Python 中生成 1000 个唯一的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836752/

相关文章:

python - 如何将文件中的字符串更改为列表中的字符串

python - Django Rest框架如何更改: "This field may not be blank." error message

javascript - 如何在 one2many odoo 13 上触发计算

python - 在 h5py 数据集中添加或删除特定行或列

Python Apscheduler 循环中的 cron 作业并不执行所有不同版本

python - Qt Designer - 使用按钮更改选项卡索引

python - 如何提取 HTML 中元素的内容?

python - 适用于 NodeJS Express 和 Python 的 Docker

python - 从国际电话号码填充国家列

python - 按属性自定义排序