2015-12-10 74 views
5

にリストのリスト私は、次の形式のデータを含むファイルがあります:これは、それがどのように見えるかの例であることに注意してくださいし、実際のファイルが2つの以上の行Pythonの:辞書

1 30 5 
2 64 4 
が含まれています

ファイルを読み込み、テキストを整数に変換してリストに格納します。これは、次のコードで行われます。

[[1, 30, 5], [2, 64, 4]] 

私は辞書にリストの私のリストを有効にする必要があります:リストのための

file = open("dataFile.txt", "r") 
items = [] 
for line in file: 
    line = map(int,line.split()) #convert the text data to integers 
    items.append(line) #add text data to list 

現在のフォーマットは次のようになります。どのようにこれを行うに行くだろうか?

辞書のキーは、私が推測-何-あなた-希望を再生し、各行の最初の数字を前提とするつもりです

+3

辞書のキーは何ですか? – paisanco

+2

何の辞書? – TigerhawkT3

+0

あなたの例では、最終結果が何であるべきかを書いてください。私が考えることのできる唯一のものは '{1:[30、5]、2:[64、4]} 'ですが、それには問題があります。 1から始まる2つの行がある場合はどうなりますか?ところで、*なぜ*最初に辞書を使いたいですか?数字のリストのリストとして保存されている数字のリストの何が間違っていますか? – zvone

答えて

4

は、実際にはシーケンシャルな識別子のいくつかの種類のある最初の要素でなければなりません、あなたは

をしたいです
1 30 5 
2 64 4 

1 : [30, 5] 
2 : [64, 4] 

そう...

with open("dataFile.txt") as dataFile: 
    items = {} 
    for line in dataFile: 
     line = map(int, line.split()) #convert the text data to integers 
     key, value = line[0], line[1:] 
     items[key] = value 
になるために

file()はすでにPythonの組み込み関数であり、その名前を他のものに再利用することは悪いフォームなので、fileの名前を変更しました。


それとも、あなたのアイテムリストから始め、代わりに辞書内包表記を使用することもできます。

itemDict = {item[0]: item[1:] for item in items} 
2

はあなたの辞書のキーがリストの第一要素になりたいと仮定すると、ここでの実装です:

list = [[1, 30, 5], [2, 64, 4]] 
dict = {} 

for l2 in list: 
    dict[l2[0]] = l2[1:] 

それはlistを反復することによって動作し、かつサブリストl2。次に、第1要素のl2をキーとしてdictに割り当て、残りの要素をl2とし、値として入力します。

結果は完成した辞書{1: [30, 5], 2: [64, 4]}

+0

items =((1、30、5)、(2、64、4))のようなものを取得するには、辞書? – JustAskingThings

+0

いいえ、それはタプルです。辞書には、ハッシュテーブルのように、キーと値のペアが必要です。また、プログラムの鍵は何ですか?最初の値? –

+0

どのようにタプルを実装しますか?正しいものです。私のキーはIDに対応する最初の値です – JustAskingThings