首页 > 解决方案 > 如何将列表列表转换为字典

问题描述

event = [['col1','col2','col3'], ['A','B','C'], ['G','H','I'], ['J','K','L']]

预计出局 [{'col1': 'A', 'col2':'B'},{'col1': 'G', 'col2':'H'},{'col1': 'J', 'col2':'K'}]

代码如下

list_ = []
for entry in event [1:]:
    row = {key: entry[idx] for idx, key in enumerate(event[0])}
    list_.append(row)
list_

我的输出是

[{'col1': 'A', 'col2': 'B', 'col3': 'C'},
 {'col1': 'G', 'col2': 'H', 'col3': 'I'},
 {'col1': 'J', 'col2': 'K', 'col3': 'L'}]

标签: python

解决方案


您可以切片event[0][:-1]忽略最后一个值

event = [['col1', 'col2', 'col3'], ['A', 'B', 'C'], ['G', 'H', 'I'], ['J', 'K', 'L']]
list_ = []
for entry in event[1:]:
    row = {key: entry[idx] for idx, key in enumerate(event[0][:-1])}
    list_.append(row)

print(list_) # [{'col1': 'A', 'col2': 'B'}, {'col1': 'G', 'col2': 'H'}, {'col1': 'J', 'col2': 'K'}]

如果要编辑名称,可以添加条件来检查值。使用列表推导

list_ = [{'country' if key == 'col1' else 'type': entry[idx] for idx, key in enumerate(event[0][:-1])} for entry in event[1:]]

推荐阅读