【问题标题】:Python loop and build a dict from listPython循环并从列表中构建一个字典
【发布时间】:2021-05-27 13:09:22
【问题描述】:

我有一个这样的输入对象:

inputListObj = [{"col1": "data1",
            "col2": "data2",
            "col3": "data3",
            "col4": "data4"
           }]

还有两个列表:

list1 = [elem1, elem2, elem3]
list2 = [prop1, prop2, prop3]

我需要用我的两个列表(list1 和 list2)的所有可能组合构建一个 dict 输出列表

这样的输出:

[
{           "col1": "data1",
            "col2": "data2",
            "col3": "data3",
            "col4": "data4",
            "col5" : "elem1",
            "col6" : "prop1"
},
{
           "col1": "data1",
            "col2": "data2",
            "col3": "data3",
            "col4": "data4",
            "col5" : "elem1",
            "col6" : "prop2"
},
...
]

有什么建议可以在 python 中实现吗?

我试过这个:

output = []
for x in list1:
    for y in list2:
        for data in inputListObj :
            data["uniq"] = str(uuid.uuid4())[:7]
            data["col5"] = x
            data["col6"]= y
            output.append(data)
print(output)

【问题讨论】:

  • 向社区表明您也在努力解决问题,这一点很重要。如果你这样做,其他人也会提供帮助。现在,您的预期输出中似乎有错字。你希望"col5" : "list1" 还是"col5" : "elem1"?最终结果是你的数组长度为3,和list1和list2的长度一样吗?
  • 是的,谢谢我提出了这个问题:)

标签: python python-3.x list dictionary


【解决方案1】:

2 for 循环适合你。如果您需要超过 2-3 个列表的组合,请不要使用 for 循环。签出Itertools

inputListObj = [{"col1": "data1",
            "col2": "data2",
            "col3": "data3",
            "col4": "data4"
           }]
    
list1 = ['elem1', 'elem2', 'elem3']
list2 = ['prop1', 'prop2', 'prop3']

output = []
for e1 in list1:
    for e2 in list2:
        tmpObj = inputListObj[0]
        tmpObj['col5'] = e1
        tmpObj['col6'] = e2
        output.append(tmpObj.copy())

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 2014-02-14
    • 2015-06-30
    • 2015-09-25
    • 2020-08-03
    • 1970-01-01
    • 2017-12-04
    • 2014-01-24
    相关资源
    最近更新 更多