如何在Python中切换字典的嵌套结构

2024-04-20 15:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有以下词典:

dict_a = {'a': {'x': 0, 'y': 1, 'z': 2},
          'b': {'x': 3, 'y': 4, 'z': 5}}

将词典结构转换为以下内容的最佳方法是什么:

dict_b = {'x': {'a': 0, 'b': 3},
          'y': {'a': 1, 'b': 4},
          'z': {'a': 2, 'b': 5}}

Tags: 方法结构dict词典
1条回答
网友
1楼 · 发布于 2024-04-20 15:56:22

使用默认词典

如果字典总是有两层深,您可以使用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] = v2

它给出:

>>> 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}}

defaultdictdict的子类,可以使用dict_b = dict(dict_b)在普通的dict中再次打开结果(如第二个查询中所示)。你知道吗

和熊猫在一起

您也可以使用pandas来实现:

from pandas import DataFrame

dict_b = DataFrame(dict_a).transpose().to_dict()

这将提供:

>>> DataFrame(dict_a).transpose().to_dict()
{'y': {'a': 1, 'b': 4}, 'x': {'a': 0, 'b': 3}, 'z': {'a': 2, 'b': 5}}

相关问题 更多 >