如何在for循环中创建key:value对列表?

Sha*_*ang 1 python dictionary append key-value

我有一个for循环,它输出一个包含15个值的列表:

for line in data: 
    line # type(line) is `<class 'list'>`
        # do things with line
Run Code Online (Sandbox Code Playgroud)

line总是一个包含11个值的Python列表,即

['value1', 'value2', 'value3', 'value4', ... ] 
Run Code Online (Sandbox Code Playgroud)

我有一个字典键列表,我手动创建:

['key1', 'key2', 'key3', ...]
Run Code Online (Sandbox Code Playgroud)

我想将我的键加入到for循环中每行的每个值.因此,我可以定义一个看起来像的新行

 ['key1': 'value1', 'key2': 'value2', 'key3': 'value3', ... ]
Run Code Online (Sandbox Code Playgroud)

这将用于for循环,即

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

编辑:我不相信这是一个重复的问题.zip(keys, values)不会产生预期的结果.

EDIT2:在列表中创建一个大字典会更容易吗?

[{'key1': 'value1', 'key2': 'value2', 'key3': 'value3', ... }]
Run Code Online (Sandbox Code Playgroud)

或者也许是制表符分隔的测试文件?

key1:value1 key2:value2 key3:value3 ....

sko*_*kin 5

如果你只想从两个列表中创建一个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']"
Run Code Online (Sandbox Code Playgroud)