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

时间:2019-04-24 18:51:02

标签: python

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

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)

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您希望将数据存储在集合中而不是列表中,以防止重复

然后您可以使用while循环

first_n = set()
while len(first_n) < 1000:
    first_n.add(fake.first_name())

答案 1 :(得分:1)

与其生成随机值,然后再检查它们是否唯一,不如检索存储在您所使用的提供程序中的名称列表,将它们混洗并返回前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])

答案 2 :(得分:0)

您可以使用一组,并不断添加,直到长度达到您想要的长度为止:

names = set()
while len(names) < LENGTH:
    names.add(NAME)

然后您可以转换回列表:

names = list(names)