2016-04-16 10 views
-4

は、私はこのようなテキストファイル内の2つの列があります。テキストファイルのデータで辞書を作成するにはどうすればよいですか?

William 2 
David 3 
Victor 5 
Jack 1 
Gavin 4 

を、私はそれがdictの中で次のようになりたい:

d = {'William': 2,'David': 3,'Victor': 5,'Jack': 1,'Gavin': 4} 

は、私はこれをどのように行うのですか?

+1

d = {} with open('file.txt') as file: for line in file.readlines(): key, value = line.split() d[key] = int(value) print(d) 

出力を。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ]と[ask]を確認してください。 –

+0

私はこの作業を行うために3日間しか残っていません! –

答えて

0
myDictionary = {} 

with open('file.txt', 'r') as f: 
    for line in f: 
     myDictionary[line.split()[0]] = int(line.split()[1]) 

あなたはfile i/odictionariesによりアップ読みたいかもしれません。

+0

実際には動作していません。私はプログラムを実行すると5回行く!!! –

+0

@WilliamJiそれは私のためにうまくいきます。 「それは5倍になる」とはどういう意味ですか? –

+0

希望の出力を得るには少し変更が必要です。とにかく、なぜ2回に分割するのですか? –

0
data = dict(line.split() for line in open('file.txt', 'r')); 
+0

' .readlines() 'は必要ありません。' line.split()[1] 'は' int(line.split()[1] 'でなければなりません。 '' open() ''は既にイテレータを返しています(そして遅延しています)。また、角括弧は必要ありません。 '' dict'の入力引数としてジェネレータ式を使用できる場合、メモリ内に巨大なリストを構築する必要はありません。 –

+0

はいそれは本当です、ありがとうございます –

+0

しかし、それはトップの見積もりを持ってはいけませんか? –

0

あなたは、この使用することができます:あなたは私たちがあなたのためにいくつかのコードを書きたいように見えます

{'David': 3, 'Gavin': 4, 'William': 2, 'Jack': 1, 'Victor': 5} 
関連する問題