2016-10-05 4 views
0

У меня есть цикл, который выводит список из 15 значений:Как создать список пар ключ: значение в цикле for?

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

Это line всегда список Python из 11 значений, т.е.

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

У меня есть список словарей ключей, которые Я создал вручную:

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

Я хотел бы присоединиться к моим ключам для каждого из значений для каждой строки в цикле 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: Было бы проще создать один большой словарь в списке?

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

или, возможно, файл с разделителями табуляции?

key1: value1 key2: значение2 ключ3: value3 ....

ответ

4

Если вы просто хотите, чтобы сделать Dict из двух списков, а затем использовать zip функцию:

>>> 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)]' nor '{'a': 1, 'b': 2}'. Это список пар ключ-значение – ShanZhengYang

+0

@ShanZhengYang Вы хотите получить список dicts? '['key1': 'value1']' не является законным синтаксисом Python. – skovorodkin

+0

У меня довольно много данных в формате ['key1: value1', 'key2: value2', ...], который я собирался использовать в разделе (:) и т. Д. Я хотел, чтобы вышеперечисленные векторы были в в том же формате. В списке можно создать один большой dicitonary, т. Е. '[{'Key1: value1', 'key2: value2', ...}]', или, возможно, даже взять пары ключ-значение, чтобы сделать разделитель табуляции text 'key1: value1 key2: value2 key3: value3' ... – ShanZhengYang