0

我对编程和 python 都很陌生。

我一直在尝试实施它,但没有成功,希望得到您的帮助。

我有一本带有奇怪键值的字典。我需要使用其中一个键作为我的索引号,另一个即第二个键作为值以及存储在字典中的值作为第三列。

例如,如果字典是

{'Michael', 'Student<matriculation no>', 'marks obtained' :  40 }

结果应该是这样的

Name                  Admission no                 marks obtained

Michael              matriculation no                    40

sara                 matriculation no                    60

其中 matriculation no 是从字典的第二个键中提取的值(每个值不同)

这持续了大约 100 行。

请提出一种方法来做到这一点。

4

1 回答 1

1

您没有多个密钥。在您的示例中,您的键是元组('Michael', 'Student', 'marks obtained')(顺便说一下,您的字典语法是错误的:它应该{('Michael', 'Student', 'marks obtained') : 40}基于您的暗示)。

如果您保证不会有两个学生有相同的名字(也许您可能包括姓氏和中间名首字母!)那么您可以只使用他们的名字作为键。然后,将值设为 tuple 是有意义的(matriculation, marks obtained)。像这样:{"Michael" : ('Student', 40)}

当你想打印这些学生时,你可能会说print name, students[name][0], "no", students[name][1]students你的字典在哪里,name是一个字符串,它是学生的名字,例如'Michael'

除了顺便说一句,我不确定你还有什么可以用来预科'Student'的。在我看来,您不需要包含它,除非您实际上可以为此设置其他值。

这里的一个很好的比喻是认为'Michael'有一些与他相关的数据,即他的入学状态和获得的分数。被录取的状态'Michael'与它(特别是)没有关联,也没有与它(特别是)获得 40 分'Michael'有关,因为这些事情可能发生在其他人身上。因此,正确的键是学生的姓名。键应该是唯一的——如果它们不是唯一的,就会遇到称为冲突的问题,其中两个或多个数据(值)与同一事物(键)相关联。


大编辑

查看您编辑的帖子后,您的密钥似乎实际上应该是入学号码,因为它永远不会相同。所以现在你的字典应该是{matriculation_no : (name, marks)}. 现在印刷print students[matriculation_no][0], "Admission", matriculation_no, students[matriculation_no][1]或类似的东西。这取决于您是否想要"Admission"在您的字符串中。


小编辑

如果要写入文件,请file.write()改用。

于 2013-06-26T21:30:46.243 回答