我需要生成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)
感谢您的帮助。
答案 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)