2013-06-26 18 views
0

我對編程以及python都很陌生。使用其中一個鍵作爲索引和其他鍵寫入文件

我一直在努力實現它,但沒有成功,並希望你的幫助。

我有一個奇怪的鍵值的字典。我需要使用其中一個鍵作爲我的索引號,其他的第二個鍵作爲值以及字典中存儲的值作爲第三列。

對於例如如果字典是

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

結果應該是這樣的

Name     Admission no     marks obtained 

Michael    matriculation no     40 

sara     matriculation no     60 

其中錄取不是從字典的第二個鍵中提取的值(不同的每個值)

這會持續大約100行。

好心建議一種方法來做到這一點。

+0

這不是一個有效的字典.. –

+0

詞典有1個鍵和1個值。您的值可能包含列表或元組,但您可能沒有超過1個鍵。 – wflynny

+0

感謝Brendan和Bill @Bill:現在我明白了不同,我很長時間以來一直困惑着我。謝謝:) –

回答

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'與其相關聯(特別是),也沒有收到與其相關的(特別是)'Michael'的40分,因爲這些事情可能發生在其他人身上。所以,正確的關鍵是學生的名字。鍵應該是唯一的 - 當它們不是時,你遇到一個稱爲碰撞的問題,其中兩個或多個數據(值)與同一事物(鍵)相關聯。


大編輯

看您的後期編輯後,它似乎是你的關鍵實際上應入學人數,因爲它是絕不相同。所以現在你的字典應該是{matriculation_no : (name, marks)}。現在打印print students[matriculation_no][0], "Admission", matriculation_no, students[matriculation_no][1]或類似的東西。這取決於你是否想在你的字符串中使用"Admission"


小編輯

如果你想寫入一個文件,使用file.write()代替。

+0

嗨2rs2ts, 謝謝,但我真正的問題是將這些值寫入文件。 –

+0

@Michael_Scofield然後,而不是說'print',使用'write()'。這裏是Python中的文件I/O操作:http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects – 2rs2ts

+0

感謝你們所有人:) 我終於可以提取所有所需的變量,將它們寫入文本文件,然後導入Matlab 乾杯:) –

相關問題