我想编写一个程序,将姓名列表平均划分为姓名及其团队的字典,问题是我不知道如何将 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))
答案 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)