python - 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)
解决方案
你想要的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}
推荐阅读
- typescript - 覆盖现有全局接口的属性
- anylogic - 使用 Anylogic 导出到 Excel 帮助
- glsl - 在片段着色器中应用变换
- javascript - 如何创建此动画效果 (GSAP)
- powershell - New-LocalUser 函数中的属性 PasswordNeverExpires 和 UserMayNotChangePassword 在 PowerShell 中不起作用
- pdf - 如何使用 PHP 和 OTP 通过 SMS 签署 PDF
- html - Apache httpd:将公告横幅注入每个页面,包括反向代理
- python - Librosa libray [Python] Azure Function 上的重新采样函数
- prestashop - 如何从 prestashop 1.7 中的前端控制器获取后台 root url
- flutter - Flutter Mockito 测试模拟失败