我需要生成 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/