我对编程以及python都很陌生。
我一直在尝试实施它,但没有成功,希望得到你的帮助。
我有一个包含奇怪键值的字典。我需要使用其中一个键作为我的索引号,其他键,即第二个键作为值以及存储在字典中的值作为第三列。
例如,如果词典是
{'Michael', 'Student<matriculation no>', 'marks obtained' : 40 }
结果应该是这样的
Name Admission no marks obtained
Michael matriculation no 40
sara matriculation no 60
其中,matriculation no是从字典的第二个键中提取的值(每个值不同)
这会持续大约100行。
请建议一种方法来做到这一点。
答案 0 :(得分:1)
您没有多个密钥。在您的示例中,您的密钥是元组('Michael', 'Student', 'marks obtained')
(顺便说一句,您的字典语法是错误的:根据您所暗示的内容,它应该是{('Michael', 'Student', 'marks obtained') : 40}
。
如果您保证没有两个学生将拥有相同的名称(也许您可能包括姓氏和中间名首字母!)那么您可以只使用他们的名字作为键。然后,将值设为元组(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()
。