使用键作为索引和其他键作为值写入文件

时间:2013-06-26 21:18:39

标签: python

我对编程以及python都很陌生。

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

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

例如,如果词典是

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

结果应该是这样的

Name                  Admission no                 marks obtained

Michael              matriculation no                    40

sara                 matriculation no                    60

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

这会持续大约100行。

请建议一种方法来做到这一点。

1 个答案:

答案 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()