首页 > 解决方案 > 如何将 2 级数组组织为自定义字典格式?

问题描述

我正在尝试转换此数组

a = [
        ['A','B','C'],
        [1,33,45],
        [721,22,9]
    ]   

           

到字典以获得此输出:

b = { 
    'A':[1,721],
    'B':[33,22],
    'C':[45,9]
}

我当前的代码是这样的,得到这个错误:

b = {}

for i in range(1,len(a)):
    for j in range(len(a[i])):
        b[a[0][j]].append(a[i][j])
        
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
KeyError: 'A'           

有人可以帮助我如何做到这一点。谢谢

标签: pythonarrayspython-3.xdictionary

解决方案


发现你的问题:

KeyError: 'A'

如果你调试它,你会发现: 在此处输入图像描述 但是b是一个空字典,它肯定会引发异常。

后面跟着你的代码,你可以改变

b = {}

from collections import defaultdict

....
b = defaultdict(list)

没关系。(其余代码不用改)


其他想法:

b = dict(zip(a[0], zip(*a[1:]))) # {'A': (1, 721), 'B': (33, 22), 'C': (45, 9)}

b = dict(zip(a[0], map(list,zip(*a[1:])))) # {'A': [1, 721], 'B': [33, 22], 'C': [45, 9]}

b = dict(zip(a[0], [list(i) for i in zip(*a[1:])])) # {'A': [1, 721], 'B': [33, 22], 'C': [45, 9]}

推荐阅读