还有另一种方法可以以允许列表的key:value关系存储信息吗? (即不是字典)

时间:2019-04-19 00:12:53

标签: python

我正在尝试创建一个将字符串作为输入的函数,确定列表中有多少支球队和球员,并将球员随机分组。我正在使用discord bot作为上下文,但这在这里并不重要。

我尝试将数字与相应团队的空列表相关联,但是字典不允许在其中添加列表,而且我不知道另外两个如何将两个值相关联。

struct student_grades
{
    int student_id; 
    int *grades_array[10];
    int grades_array_pos;
    int grades_array_size;
};
void add_grade(struct student_grades * student, int assignment_grade){

}

我希望能够输入一些团队和姓名列表,例如“ 2”和“ Billy,Susie,Frank,Luke,Kensie,Jack”,并在输出中显示“ Billy,Luke” ,“ Susie”,“ Frank,Jack,Kensie”,但由于脚本停止在字典保存列表中,因此目前没有输出。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎在使用基本Python语法方面遇到了一些问题,例如ifwhile以及如何循环N次。

此外,似乎不需要字典。您可以只使用列表列表。

有关将玩家随机分为N队的简单方法,请参见Python - randomly partition a list into n nearly equal parts

def PickTeam(number_of_teams, player_names):
    PlayerList = player_names.split(", ")
    random.shuffle(PlayerList)
    teams = [PlayerList[i::number_of_teams] for i in range(number_of_teams)]
    return teams

for team in PickTeam(2, "Billy, Susie, Frank, Luke, Kensie, Jack"):
    print(team)

在列表理解中,PlayerList[i::number_of_teams]PlayerList列表的一部分,从元素i开始加星号,到达列表的末尾,取每个number_of_teams元素。因此,如果number_of_teams3,它将创建一个包含3个子列表的列表。第一个子列表将是:

[PlayerList[0], PlayerList[3], PlayerList[6], ...]

第二个将是:

[PlayerList[1], PlayerList[4], PlayerList[7], ...]

第三个是:

[PlayerList[2], PlayerList[5], PlayerList[8], ...]

DEMO