Python 如何将二级数组组织为自定义字典格式?
我正在尝试转换此数组Python 如何将二级数组组织为自定义字典格式?,python,arrays,python-3.x,dictionary,Python,Arrays,Python 3.x,Dictionary,我正在尝试转换此数组 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[
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'
也许有人能帮我做这件事的方法。谢谢您可以通过嵌套字典理解来完成此操作,首先循环[0]中的键值,然后循环[0]中其他列表中的单个值: 输出:
{'A': [1, 721], 'B': [33, 22], 'C': [45, 9]}
您可以通过嵌套字典理解来实现这一点,首先循环[0]中的键值,然后循环[0]中其他列表中的单个值: 输出:
{'A': [1, 721], 'B': [33, 22], 'C': [45, 9]}
试试这个:
from collections import defaultdict
result = defaultdict(list)
for i in a[1:]: # start from second list
for k, v in zip(a[0], i):
result[k].append(v)
print(dict(result)) # {'A': [1, 721], 'B': [33, 22], 'C': [45, 9]}
试试这个:
from collections import defaultdict
result = defaultdict(list)
for i in a[1:]: # start from second list
for k, v in zip(a[0], i):
result[k].append(v)
print(dict(result)) # {'A': [1, 721], 'B': [33, 22], 'C': [45, 9]}
发现您的问题:
KeyError: 'A'
如果对其进行调试,您将发现:
但b是一本空字典,它肯定会引发异常
只需跟随代码,就可以进行更改
b = {}
到
没有问题。代码的其余部分不需要更改
其他想法:
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]}
发现您的问题:
KeyError: 'A'
如果对其进行调试,您将发现:
但b是一本空字典,它肯定会引发异常
只需跟随代码,就可以进行更改
b = {}
到
没有问题。代码的其余部分不需要更改
其他想法:
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]}
谢谢你的帮助。我选择您的解决方案是因为您共享了其他方式。您在哪个应用程序中进行调试?“zip comand”中的星号是什么意思?@GerCas星号看起来像解压。你可以参考。谢谢你的帮助。我选择您的解决方案是因为您共享了其他方式。您在哪个应用程序中进行调试?zip comand中的星号是什么意思?@GerCas星号看起来像解压。你可以参考。感谢Nick帮助分享你的信息solution@GerCas不用担心-我希望你觉得它有用。谢谢Nick帮助分享你的信息solution@GerCas别担心,我希望你觉得它有用。