首页 > 解决方案 > Python重新排列分组的字典

问题描述

我正在尝试开发一个代码,其中一半已经完成,我正在对我的字典进行分组。我想创建一个函数以从 b_dict 返回到 a_dict 我想将其打印为这样;

预期产出;

a_dict:  {'A': 1, 'B': 2, 'C': 3, 'D': 1, 'E': 2, 'F': 3} # Original Diction
Grouped dict:  {1: ['A', 'D'], 2: ['B', 'E'], 3: ['C', 'F']} # Grouped Diction
Expected dict: {'A': 1, 'D': 1, 'B': 2, 'E': 2, 'C': 3, 'F': 3} # Expected second output with go_back function. Current output can not do this

代码:

a_dict = {'A': 1, 'B': 2, 'C': 3, 'D': 1, 'E': 2, 'F': 3}
print('a_dict: ', a_dict)


def fun_dict(a_dict):
    b_dict = {}
    for i, v in a_dict.items():
        b_dict[v] = [i] if v not in b_dict.keys() else b_dict[v] + [i]
    return b_dict


def go_back(b_dict):
#
# Need a function to convert b_dict to c_dict to go back as the expected output
# 

b_dict = fun_dict(a_dict)
print('Grouped dict: ', b_dict)

c_dict = fun_dict(b_dict)
print('Went to the original dict: ', c_dict)

标签: python

解决方案


你想要的go_back可能是这样的:

def go_back(b_dict):
    r = {}
    for k, vv in b_dict.items():
        for v in vv:
            r[v] = k
    return r

结果:

Went to the original dict:  {'A': 1, 'D': 1, 'B': 2, 'E': 2, 'C': 3, 'F': 3}

推荐阅读