如何在 for 循环中创建键:值对列表? [复制]

Posted

技术标签:

【中文标题】如何在 for 循环中创建键:值对列表? [复制]【英文标题】:How to create a list of key:value pairs in a for loop? [duplicate] 【发布时间】:2017-02-13 20:28:58 【问题描述】:

我有一个输出 15 个值的列表的 for 循环:

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

这个line 始终是一个包含 11 个值的 Python 列表,即

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

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

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

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

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

这将在for循环中使用,即

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

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

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

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

或者可能是制表符分隔的测试文件?

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

【问题讨论】:

【参考方案1】:

如果你只想从两个列表中创建一个字典,那么使用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']"

【讨论】:

所以,以上选项似乎都不能解决我的问题。我的输出实际上看起来像['key1': 'value1', 'key2': 'value2', 'key3': 'value3', ... ]。不是[('a', 1), ('b', 2)] 也不是'a': 1, 'b': 2。这是一个键值对列表 @ShanZhengYang 你想获取字典列表吗? ['key1': 'value1'] 不是合法的 Python 语法。 我有很多格式为 ['key1:value1', 'key2:value2',...] 的数据,我将使用 partition(:) 等。我希望上面的向量具有相同的格式。可以在列表中创建一个大字典,即['key1:value1', 'key2:value2',...] ,或者甚至可以使用键值对来制作制表符分隔的文本key1:value1 key2:value2 key3:value3 ... @ShanZhengYang 所以你只是想做一个字符串,而不是Python数据结构? 这样更容易。 (1) 如何使用 key list 和 value list 来制作 key:value 字符串(如之前的评论)和 (2) 如何将列表中的大字典如['key1:value1', 'key2:value2',...] 变成 key:value 字符串?跨度>

以上是关于如何在 for 循环中创建键:值对列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何递归遍历 R 列表中的所有键值对并修改值? [复制]

如何在从列表更新路径的for循环中读取多个json? [复制]

我可以在 for 循环中将键值对添加到 NSarray 或字典吗?

如何在 Python 中创建多个 for 循环列表的递归以获得组合? [复制]

复合数据类型

如何在 Python 的 for 循环中删除列表元素? [复制]