我想将列表列表转换为词典列表。第一个列表的值应该是我的键,其余所有值都应视为值。
例如:
[['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]
应转换为
[{'a':[1,4,7]}, {'b': [2,5,8]},{'b': [3,6,9]}]
我找到了this,但对我没有帮助。
任何帮助将不胜感激。谢谢
答案 0 :(得分:4)
使用zip
将数组转置为[('a', 1, 4, 7), ...]
;弹出第一个元素作为键,将其余元素列为值。
arr = [['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]
[{ e[0]: list(e[1:])} for e in zip(*arr)]
# => [{'a': [1, 4, 7]}, {'b': [2, 5, 8]}, {'c': [3, 6, 9]}]
答案 1 :(得分:4)
使用列表解析和序列拆包:
L = [['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]
res = [{names: nums} for names, *nums in zip(*L)]
print(res)
[{'a': [1, 4, 7]}, {'b': [2, 5, 8]}, {'c': [3, 6, 9]}]
答案 2 :(得分:0)
a=[['a','b','c'],[1,2,3],[4,5,6],[7,8,9]]
dictionary_values=[dict([(a[0][i],list(zip(*a[1:])[i])) for i in range (len(a)-1)])]
输出:
[{'a': [1, 4, 7], 'b': [2, 5, 8], 'c': [3, 6, 9]}]