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

我需要在Python中生成1000个唯一的名字,python,Python,我需要生成1000个唯一的名字,并将它们存储在一个列表中。 我正在使用PythonFaker,但是得到了太多重复的值 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:

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

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)

谢谢您的帮助。

您需要将数据存储在一个集合中,而不是列表中,以防止重复

然后可以使用while循环

first_n = set()
while len(first_n) < 1000:
    first_n.add(fake.first_name())
first\u n=set()
而len(first_n)<1000:
first\u n.add(fake.first\u name())

您可以使用一个集合,并不断添加,直到长度符合您的要求:

names = set()
while len(names) < LENGTH:
    names.add(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])

我犯了一个错误。。“AttributeError:'set'对象没有属性'append'应该是add而不是append。但是它可能会慢。@Abhi应该是。正如前面提到的,它会慢,虽然是的,它太慢了,仍然没有得到结果。还有其他选项吗?谢谢,但每次我得到不同的值。每次运行时我都需要相同的值。在这种情况下,请为随机数种子每次调用shuffle之前,请使用与您自己的示例中相同的种子生成ber生成器。我已更新了答案中的代码,以便也使用种子。从random import shuffle,从faker.providers.person.en import Provider first_names=list(Provider.first_names)seed(4321)shuffle(first_names)li=(first_names[0:1000])print(len(li))new=[]对于li中的n:if n in new:new.append(“repeat”)else:new.append(n)print(排序(new))获取列表最后的重复值。“'Zoey'、'Zollie'、'Zora'、'repeat'、'repeat'、'repeat'、'repeat'”“啊,这可能是由于男女名字重复造成的。可以在将唯一名称提取为列表之前创建集合。我又更新了代码。我可以用同样的姓氏吗?
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])