2016-10-05 10 views
0

私は15個の値のリストを出力forループがあります。forループのkey:valueのペアのリストを作成するには?

for line in data: 
    line # type(line) is `<class 'list'>` 
     # do things with line 

これlineは、すなわち

['value1', 'value2', 'value3', 'value4', ... ] 

私は辞書のキーのリストを持って、常に11の値のPythonのリストです私は手作業で作成しました:

['key1', 'key2', 'key3', ...] 

forループの各行の各値にキーを結合します。したがって、私は、これは、forループで使用される

['key1': 'value1', 'key2': 'value2', 'key3': 'value3', ... ] 

のように見える新しいライン、すなわち

for line in data: 
    line # values 
    # join key-value pairs 
    # new_line = ['key1': 'value1', 'key2': 'value2', 'key3': 'value3', ... ] 
     # do things with new_line 

EDITを定義することができます。私は、これは、繰り返しの質問であるとは考えていません。 zip(keys, values)は望ましい結果を生成しません。

EDIT2:リスト内に1つの大きな辞書を作成する方が簡単でしょうか?

[{'key1': 'value1', 'key2': 'value2', 'key3': 'value3', ... }] 

またはタブ区切りのテストファイルですか?

キー1:VALUE1 KEY2:値2のKEY3:VALUE3 ....あなただけの二つのリストから辞書を作りたい場合は、zip機能を使用

答えて

4

:だから

>>> keys, values = ['a', 'b'], [1, 2] 
>>> list(zip(keys, values)) 
[('a', 1), ('b', 2)] 

>>> dict(zip(keys, values)) 
{'a': 1, 'b': 2} 

>>> [{k: v} for k, v in zip(keys, values)] 
[{'a': 1}, {'b': 2}] 

>>> ' '.join('{}:{}'.format(k, v) for k, v in zip(keys, values)) 
'a:1 b:2' 

>>> '[{}]'.format(', '.join("'{}': '{}'".format(k, v) for k, v in zip(keys, values))) 
"['a': '1', 'b': '2']" 
+0

は、それがのどちらも表示されます上記のオプションは私の問題を解決します。私の出力は実際には '['key1': 'value1'、 'key2': 'value2'、 'key3': 'value3'、...]'のようになります。 '{( 'a'、1)、( 'b'、2)]' '{'a':1、 'b':2}'ではありません。それはキーと値のペアの一覧です – ShanZhengYang

+0

@ShanZhengYangあなたはdictsのリストを取得したいですか? '['key1': 'value1']'は法的なPython構文ではありません。 – skovorodkin

+0

私は([key1:value1 '、' key2:value2 '、...]という形式のかなりのデータをパーティション(:)などを使用していましたが、上記のベクトルが同じフォーマット。一つの大きなdicitonaryを '[{'key1:value1'、 'key2:value2'、...}]'で作成することも可能ですし、キーと値のペアを取ってタブ区切りにすることもできますテキスト 'key1:value1 key2:value2 key3:value3' ... – ShanZhengYang

関連する問題