将16个团队中的随机团队分配给8个人中的随机人员

时间:2016-06-10 12:33:35

标签: python arrays list random

我试图将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)

4 个答案:

答案 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']

来自the documentation

  

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