繁体   English   中英

将字典(带有键和值列表)转换为字典列表

[英]To convert a dict (with list of keys and values) into list of dict

我有一个带有键列表的字典,并且这些值单独存储在列表列表中:

obj = {
    'keys': ['key1', 'key2', 'key3'], 
    'items': [['value1', 'value2', 'value3'], ['value4', 'value5', 'value6'], ['value7', 'value8', 'value9']]
}

所需的输出是将它们“合并”到一个 dict 列表中,如下所示:

[
    {'key1': 'value1', 'key2': 'val2', 'key3': 'val3'}, 
    {'key1': 'value4', 'key2': 'val5', 'key3': 'val6'}, 
    {'key1': 'value7', 'key2': 'val8', 'key3': 'val9'}
]

我试过这种直接的方法

result = []
for item in obj['items']:
        result.append(dict(zip(obj['keys'], item)))

并将其缩短为这个

[dict(zip(obj['keys'], item)) for item in obj['items']]

是否有其他替代方法来实现所需的输出?

我可以知道这种“合并”操作的名称是什么?

您可以使用pandas

obj = {
    'keys': ['key1', 'key2', 'key3'], 
    'items': [['value1', 'value2', 'value3'], ['value4', 'value5', 'value6'], ['value7', 'value8', 'value9']]
}

df = pd.DataFrame(obj['items'], columns=obj['keys'])
df.to_dict(orient='records')

结果:

[{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'},
 {'key1': 'value4', 'key2': 'value5', 'key3': 'value6'},
 {'key1': 'value7', 'key2': 'value8', 'key3': 'value9'}]
[ dict(zip(obj['keys'], item)) for item in obj['items'] ]

您的最后一行包含以下组件的组合:

  • 列表理解,即[ function(x) for x in list_x ]

  • 压缩 2 个列表,即zip(list1, list2)

也许这些是您正在寻找的“合并”操作的名称?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM