Fil*_*ixo 3 python dictionary nested
如果我有以下字典:
dict_a = {'a': {'x': 0, 'y': 1, 'z': 2},
'b': {'x': 3, 'y': 4, 'z': 5}}
Run Code Online (Sandbox Code Playgroud)
将字典结构切换为的最佳方法是什么:
dict_b = {'x': {'a': 0, 'b': 3},
'y': {'a': 1, 'b': 4},
'z': {'a': 2, 'b': 5}}
Run Code Online (Sandbox Code Playgroud)
鉴于字典总是两层深,您可以使用以下命令执行此操作defaultdict:
from collections import defaultdict
dict_b = defaultdict(dict)
for k,v in dict_a.items():
for k2,v2 in v.items():
dict_b[k2][k] = v2Run Code Online (Sandbox Code Playgroud)
这使:
>>> dict_b
defaultdict(<class 'dict'>, {'x': {'a': 0, 'b': 3}, 'z': {'a': 2, 'b': 5}, 'y': {'a': 1, 'b': 4}})
>>> dict(dict_b)
{'x': {'a': 0, 'b': 3}, 'z': {'a': 2, 'b': 5}, 'y': {'a': 1, 'b': 4}}
Run Code Online (Sandbox Code Playgroud)
defaultdict是 的子类dict,您可以在香草中再次将结果转换为dictwith dict_b = dict(dict_b)(如第二个查询中所示)。
您也可以pandas为此使用:
from pandas import DataFrame
dict_b = DataFrame(dict_a).transpose().to_dict()Run Code Online (Sandbox Code Playgroud)
这给出:
>>> DataFrame(dict_a).transpose().to_dict()
{'y': {'a': 1, 'b': 4}, 'x': {'a': 0, 'b': 3}, 'z': {'a': 2, 'b': 5}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |