我试图将16支球队中的两支球队分配给8人中的8人,
这就是我所拥有的:
import random
person = ['Ashton', 'Danny', 'Martin', 'Yves', 'Nick', 'Cormac', 'Thierry', 'Ciaran']
team = ['France', 'Switzerland', 'England', 'Slovakia', 'Germany', 'Ukraine', 'Spain', 'Czech Republic', 'Croatia', 'Italy', 'Republic of Ireland', 'Sweden', 'Russia', 'Wales', 'Belgium']
namesTeams = {}
for x in person:
teamName = team[random.randint(0, len(team) -1)]
namesTeams[x] = teamName
team.remove(teamName)
print(namesTeams)
答案 0 :(得分:2)
可以使用random.choice([List])
示例:
import random
persons = ['Name', 'Name', 'Name', 'Name', 'Name', 'Name', 'Name', 'Name']
teams = ['France', 'Switzerland', 'England', 'Slovakia', 'Germany', 'Ukraine', 'Spain', 'Czech Republic', 'Croatia', 'Italy', 'Republic of Ireland', 'Sweeden', 'Russia', 'Wales', 'Belgium']
combinations = {p: random.choice(teams) for p in persons}
结果是字典。
如果你想避免重复,你必须遍历列表。
combinations = {}
for p in persons:
team = random.choice(teams)
combinations[p] = team
teams.remove(team)
答案 1 :(得分:1)
所以你要做的就是随机选择" names
"来自teams
的元素。在这种情况下,您应该使用random.sample()
:
>>> import random
>>> person = ['Name', 'Name', 'Name', 'Name', 'Name', 'Name', 'Name', 'Name']
>>> team = ['France', 'Switzerland', 'England', 'Slovakia', 'Germany', 'Ukraine', 'Spain', 'Czech Republic', 'Croatia', 'Italy', 'Republic of Ireland', 'Sweeden', 'Russia', 'Wales', 'Belgium']
>>> random.sample(team, len(person))
['Ukraine', 'Russia', 'England', 'Croatia', 'France', 'Spain', 'Italy', 'Wales']
random.sample(population, k)
返回从人口序列或集合中选择的唯一元素的
k
长度列表。用于无需替换的随机抽样。返回包含来自总体的元素的新列表,同时保持原始总体不变。结果列表按选择顺序排列,因此所有子切片也将是有效的随机样本。这允许抽奖获奖者(样本)被划分为大奖和第二名获胜者(下属)。
如果您想为每个人分配两个团队,我建议您random.shuffle()
team
列表,然后将列表拆分为2个大小的块,并将结果放入字典中:
{person: two_teams for person, two_teams in
zip(people, [team[i:i+2] for i in range(0, len(team), 2)])}
答案 2 :(得分:0)
使用random.choice()
。在您的情况下,您可以拥有以下内容:
import random
names = ['Name1', 'Name2', 'Name3']
teams = ['France', 'Switzerland', 'England', 'Slovakia', 'Germany', 'Ukraine', 'Spain', 'Czech Republic', 'Croatia', 'Italy', 'Republic of Ireland', 'Sweeden', 'Russia', 'Wales', 'Belgium']
people = []
for name in names:
people.append(random.choice(names), random.choice(teams))
people
将是一个名称和团队的元组列表。
答案 3 :(得分:0)
这会创建一个字典,其名称附加到团队,没有重复
ChangePassword