python - 如何将 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'
有人可以帮助我如何做到这一点。谢谢
解决方案
发现你的问题:
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]}
推荐阅读
- google-app-engine - 通过 App Engine 上的自定义域使用 Google IAP
- swift - 线程 0 崩溃
- javascript - Vue 和 Vuex 在 store 模块中做 Axios 操作
- javascript - 如何正确映射数组以访问其嵌套数组中的属性?
- database - 基于资源的授权数据库模式
- amazon-web-services - 如何处理对 Amazon Lex 的 lambda 响应?
- kubernetes - Kubernetes 微服务之间的通信
- json - 如何从 json 嵌套对象返回布尔值
- javascript - 我想删除 mikkymax 文件
- python - 如何使用 Flask、jinja2 动态更改表状态(已发送、已发送、已取消)