2017-03-26 24 views
-1

2行のファイルを開き、辞書を作成する関数を記述したいと思います。最初の行はキーを与える文字列であり、2行目は値を与える文字列です。Python:ファイルから辞書を作成する

どうすればいいですか?

+0

どのようにキー/値を区切っていますか?間隔?コンマ? – LFlare

+0

何を試しましたか?あなたのファイルには何が入っていますか? – abccd

+0

私はファイルを与えられていない、私はちょうどこれを行う任意の関数を書くことになっています – Hannnnn

答えて

2

このテクニックは、一度に1行を抽出するためにfile.readline()を使用することです。 str.split()を使用してキーに分割します(明示的な区切り記号が必要かどうかはデータによって異なります)。が得られるキー値、一緒zip()それらを、最終的な辞書にするためにdict()を呼び出したら:

python ruby go c rust swift 
snake gem verb letter oxide race 

:たとえば

with open('somefile.txt') as f: 
    keys = f.readline().split() 
    values = f.readline().split() 
d = dict(zip(keys, values)) 

は、このような "somefile.txt" 与えられました結果として得られるdict dは次のようになります。

{'python': 'snake', 'ruby': 'gem', 'go': 'verb', 'c': 'letter', 'rust': 'oxide', 'swift': 'race'} 
0

短くてシンプルな

file = open("file.txt", "r").read() 
lines = file.split("\n") 
dictionary = dict() 

while (i < len(lines[0])): 
    dictionary[lines[0][i]] = lines[1][i] 
+0

このコードをテストしましたか?私はそれが動作するとは思わない。 'i'は決して初期化されません。 'i'はインクリメントされないので、プログラムは決して終了しません。ファイルハンドルは決して閉じられません。文法的には、 '[0]'や '[1]'のような位置インデックスに依存しないソリューションが読みやすいため好ましい。 'dictionary = {}'は空の辞書を初期化するために 'dictionary = dict()'より優先されます。受け入れられる答えは短くてシンプルです。 –

関連する問題