【问题标题】:How to create a list of key:value pairs in a for loop? [duplicate]如何在 for 循环中创建键:值对列表? [复制]
【发布时间】: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 ....

【问题讨论】:

    标签: python dictionary append key-value


    【解决方案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 字符串?跨度>
    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2010-10-01
    • 2017-11-14
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多