【问题标题】:merging list with nested list将列表与嵌套列表合并
【发布时间】:2021-12-10 21:48:01
【问题描述】:

我需要“交叉加入”(因为需要更好的术语!)2 个列表。 在它们之间,它们代表一个表格数据集,但是.. 一个包含列标题名称,另一个包含行值的嵌套数组。

我已经完成了简单的部分:

col_names = [i['name'] for i in c]

将列名剥离到没有'typeName'的列表中

但只是想如何提取行字段值并将它们与列名映射..让我很头疼!

任何指针表示赞赏;) 谢谢

列(如提供):

[
{
    "name": "col1",
    "typeName": "varchar"
},
{
    "name": "col2",
    "typeName": "int4"
}

]

记录(如提供):

[
    [
        {
            "stringValue": "apples"
        },
        {
            "longValue": 1
        }
    ],
    [
        {
            "stringValue": "bananas"
        },
        {
            "longValue": 2
        }
    ]
]

要求的结果:

[
    {
        'col1':'apples',
        'col2':1
    },
    {
        'col1':'bananas',
        'col2':2
    }
]
    

【问题讨论】:

  • 你确定你的数据是这样的吗,一个单独的字典列表?我本来希望“stringValue”和“longValue”成为同一个字典的一部分。
  • 是的,这很痛苦。
  • 是的,这很痛苦。每个表行都是一个列表,其中的每个字段都是它自己的 dic。链接上的完整架构,但您必须向下滚动到“响应语法”。 boto3.amazonaws.com/v1/documentation/api/latest/reference/…

标签: python json


【解决方案1】:

您必须能够假设架构中的名称和记录中的字典之间存在一对一的对应关系。一旦你假设了,这很容易:

names = [i['name'] for i in schema]

data = []
for row in records:
    d = {}
    for a,b in zip( names, row ):
        d[a] = list(b.values())[0]
    data.append(d)
print(data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2021-04-26
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多