从名称列表中随机生成团队

时间:2021-02-11 11:56:19

标签: python class random

我想编写一个程序,将姓名列表平均划分为姓名及其团队的字典,问题是我不知道如何将 team_list 分发给玩家

import random
team_list = ['A', 'B']
players = ['Hosein', 'Maziar', 'Akbar', 'Nima', 'Mehdi', 'Farhad', 'Mohamad', 'Khashayar', 'Milad', 'Mostafa',
                         'Amin', 'Saeed', 'Pooya', 'Pooria', 'Reza', 'Ali', 'Behzad', 'Soheil', 'Behrooz', 'Shahrooz', 'Saman', 'Mohsen']

def team(player_list):
    random.shuffle(player_list)
    return [player_list[i::2] for i in range(2)]

print(team(players))

1 个答案:

答案 0 :(得分:1)

我不知道你期望什么结果,但我看到了两个可能的版本

带有 teams 的字典

teams = dict()

teams["A"] = player_list[0::2]
teams["B"] = player_list[1::2]

for team, names in teams.items():
    print(team, names)

结果

A ['Nima', 'Shahrooz', 'Pooya', 'Mehdi', 'Behzad', 'Maziar', 'Saeed', 'Mostafa', 'Akbar', 'Reza', 'Behrooz']
B ['Ali', 'Mohamad', 'Pooria', 'Milad', 'Hosein', 'Saman', 'Farhad', 'Mohsen', 'Soheil', 'Amin', 'Khashayar']

带有 players 的字典

players = dict()

for i, team in enumerate(team_list):
    for name in player_list[i::2]:
        players[name] = team

结果:

随机分配给团队的名称,但字典将它们按顺序排列:首先是 "A" 的所有随机名称,然后是 "B" 的所有随机名称

Nima A
Shahrooz A
Pooya A
Mehdi A
Behzad A
Maziar A
Saeed A
Mostafa A
Akbar A
Reza A
Behrooz A
Ali B
Mohamad B
Pooria B
Milad B
Hosein B
Saman B
Farhad B
Mohsen B
Soheil B
Amin B
Khashayar B

完整的工作代码:

import random

team_list   = ['A', 'B']

player_list = ['Hosein', 'Maziar', 'Akbar', 'Nima', 'Mehdi', 
               'Farhad', 'Mohamad', 'Khashayar', 'Milad', 'Mostafa', 
               'Amin', 'Saeed', 'Pooya', 'Pooria', 'Reza', 
               'Ali', 'Behzad', 'Soheil', 'Behrooz', 'Shahrooz', 
               'Saman', 'Mohsen']

random.shuffle(player_list)

print('--- teams ---')

teams = dict()

teams["A"] = player_list[0::2]
teams["B"] = player_list[1::2]

#print(teams)

for team, names in teams.items():
    print(team, names)
    
print('--- players ---')

players = dict()

for i, team in enumerate(team_list):
    for name in player_list[i::2]:
        players[name] = team

#print(players)

for name, team in players.items():
    print(name, team)

编辑:

我添加了更改字典中顺序以保持原始顺序的代码。 但是字典不必保持秩序,所以我不知道它是否有意义。

我还创建了以原始顺序保存项目 [name, team] 的列表,但列表不像字典那么有用。

import random

team_list   = ['A', 'B']

player_list = ['Hosein', 'Maziar', 'Akbar', 'Nima', 'Mehdi', 
               'Farhad', 'Mohamad', 'Khashayar', 'Milad', 'Mostafa', 
               'Amin', 'Saeed', 'Pooya', 'Pooria', 'Reza', 
               'Ali', 'Behzad', 'Soheil', 'Behrooz', 'Shahrooz', 
               'Saman', 'Mohsen']

player_list_random = player_list.copy()   # duplicate to keep original `player_list`
random.shuffle(player_list_random)

print('--- teams ---')

teams = dict()

teams["A"] = player_list_random[0::2]
teams["B"] = player_list_random[1::2]

#print(teams)

for team, names in teams.items():
    print(team, names)
     
print('--- players ---')

players = dict()

for i, team in enumerate(team_list):
    for name in player_list_random[i::2]:
        players[name] = team

players_in_order_dict = dict()
players_in_order_list = list()

# uses original `player_list` to create dict with original order
for name in player_list:
    players_in_order_dict[name] = players[name]
    players_in_order_list.append( [name, players[name]] )
#print(players)

print('- dict -')
for name, team in players_in_order_dict.items():
    print(name, team)

print('- list -')
for name, team in players_in_order_list:
    print(name, team)
相关问题