我正在尝试将列表列表转换为字典,但我遇到了麻烦。有人会提供一些提示吗?
这是我的意见:
[['Column1', 'Column2', 'Column3', 'Column4', 'Column5'],
['Value1Column1', 'Value1Column2', 'Value1Column3', 'Value1Column4',
'Value1Column5'], ['Value2Column1', 'Value2Column2', 'Value2Column3',
'Value2Column4', 'Value2Column5'], ...,
['ValueXColumn1','ValueXColumn2', 'ValueXColumn3', 'ValueXColumn4', 'ValueXColumn5']]
有了这个我想创建一个字典,其中我的键是仅元素来自第一个列表 Column1,Column2 ... Column5 。
众所周知,对于每个键,精确值是其余列表中的元素:
Column1 - > Value1Column1,Value2Column1 ...
Column2 - > Value1Column2,Value2Column2 ......
预期结果:
"Column1": ["Value1Column1", "Value2Column1"...]
我一直在尝试使用zip,enumurate(可能使用错误)并且总是意外输出。谢谢!
答案 0 :(得分:4)
使用dict comprehension和zip function非常简单。
seq_of_seq = [['Column1', 'Column2', 'Column3', 'Column4', 'Column5'],
['Value1Column1', 'Value1Column2', 'Value1Column3', 'Value1Column4', 'Value1Column5'],
['Value2Column1', 'Value2Column2', 'Value2Column3', 'Value2Column4', 'Value2Column5'],
['ValueXColumn1', 'ValueXColumn2', 'ValueXColumn3', 'ValueXColumn4', 'ValueXColumn5']]
d = {s[0]: s[1:] for s in zip(*seq_of_seq)}
这会产生值为元组:
{'Column1': ('Value1Column1', 'Value2Column1', 'ValueXColumn1'),
'Column2': ('Value1Column2', 'Value2Column2', 'ValueXColumn2'),
'Column3': ('Value1Column3', 'Value2Column3', 'ValueXColumn3'),
'Column4': ('Value1Column4', 'Value2Column4', 'ValueXColumn4'),
'Column5': ('Value1Column5', 'Value2Column5', 'ValueXColumn5')}
如果您确实需要使用列表:
d = {s[0]: list(s[1:]) for s in zip(*seq_of_seq)}
结果:
{'Column1': ['Value1Column1', 'Value2Column1', 'ValueXColumn1'],
'Column2': ['Value1Column2', 'Value2Column2', 'ValueXColumn2'],
'Column3': ['Value1Column3', 'Value2Column3', 'ValueXColumn3'],
'Column4': ['Value1Column4', 'Value2Column4', 'ValueXColumn4'],
'Column5': ['Value1Column5', 'Value2Column5', 'ValueXColumn5']}
答案 1 :(得分:1)
这是冗长但直接的版本:
from collections import defaultdict
keys = lst[0]
rows = lst[1:]
result = defaultdict(list)
for row in rows:
for key, value in zip(keys, row):
result[key].append(value)
答案 2 :(得分:0)
a = [['Column1', 'Column2', 'Column3', 'Column4', 'Column5'], ['Value1Column1', 'Value1Column2', 'Value1Column3', 'Value1Column4', 'Value1Column5'], ['Value2Column1', 'Value2Column2', 'Value2Column3', 'Value2Column4', 'Value2Column5']]
[{a[0][i]: [j[i] for j in a[1:]] for i in range(len(a[0]))}]
给出
[{'Column1': ['Value1Column1', 'Value2Column1'],
'Column2': ['Value1Column2', 'Value2Column2'],
'Column3': ['Value1Column3', 'Value2Column3'],
'Column4': ['Value1Column4', 'Value2Column4'],
'Column5': ['Value1Column5', 'Value2Column5']}]