data =(('name/score','game1', 'game2', 'game3', 'game4', 'game5'),('A','1','2','3','4','5'),('B','6','7','8','9','10'),('C','11','12','13','14','15'))
元组的第一个元素是一种头(类似于excel文件中的第一行)。
您需要构建一个字典字典,其中第一级的键是用户(a、B、C等),第二级字典的键是game1、game2等,其值表示给定游戏中达到的分数。在
^{pr2}$
dict(zip(data[0][1:],t[1:])是使用第一个元组数据(“game1”、“game2”等)中的键从每个元组数据(从第二个元组开始)作为值创建字典的部分。我们故意忽略所有元组的第一个元素:“name/score”被忽略,用户名“A”、“B”等也被忽略。在
然后我们将上面获得的每个字典“附加”到一个密钥上,该密钥是用户名:(t[0],dict(zip…..),我们得到一个元组。在
最后,从元组列表中,我们使用dict-builtin函数创建一个字典。在
以上代码将把您的输入元组转换为字典,如:{'A': {'game1': '1', 'game2': '2', 'game3': '3', 'game4': '4', 'game5': '5'},
'B': {'game1': '6', 'game2': '7', 'game3': '8', 'game4': '9', 'game5': '10'},
'C': {'game1': '11', 'game2': '12', 'game3': '13', 'game4': '14', 'game5': '15'}}
要获得游戏3中用户A的分数,请写下:>>D["A"]["game3"]
3
既然您评论说您不想使用字典,下面是一个应该满足您需要的函数:def get_score(D, user, game):
i = D[0].index(game)
for t in D[1:]:
if t[0] == user:
return t[i]
print get_score(data, "A", "game3")