如何通过处理原始字典来创建新字典

how to create a new dictionary by processing the original one

这是说明: 创建一个新的字典(通过处理原始字典),以 Term 作为键和一个列表 每个 Term 键的 (amount, rate) 元组。

这个函数returns抵押贷款词典

def getMortgages():
    m_dict = {'867E23': (208000, 0.015, 120), '837E23': (156000, 0.030, 180), '467E23': (720000, 0.065, 240),
              '337E23': (333000, 0.087, 120), '829E23': (241000, 0.0315, 240), '867W35': (187000, 0.033, 180),
              '86E87': (165000, 0.063, 90), '86A3E3': (132000, 0.0312, 120), '367W51': (500000, 0.055, 360),
              '327Q65': (320000, 0.0321, 180), '837C09': (432000, 0.0516, 240), '863M88': (812000, 0.0628, 360),
              '862W76': (333000, 0.0445, 180), '86NE2B': (446000, 0.0443, 240), '862A42': (778000, 0.0523, 360)}
    return m_dict

以下是我创建新词典的方法:

mortgageAmount = getMortgages()
mortgageNew = dict((term, (amount, rate)) for amount, rate, term in mortgageAmount.values())
    print(mortgageNew)

但现在它总结了金额和费率的所有值, {120: (132000, 0.0312), 180: (333000, 0.0445), 240: (446000, 0.0443), 90: (165000, 0.063), 360: (778000, 0.0523)}

我想知道为什么以及如何修复它以显示每个金额和费率,而不是将它们相加,如下所示:

120:[(100000,.02), (200000,.03)],
240:[(150000,0.0315)...],
...```

您显示的输出似乎与输入不符。话虽如此,我 认为 这就是你想要做的事情:

m_dict = {'867E23': (208000, 0.015, 120), '837E23': (156000, 0.030, 180), '467E23': (720000, 0.065, 240),
          '337E23': (333000, 0.087, 120), '829E23': (241000, 0.0315, 240), '867W35': (187000, 0.033, 180),
          '86E87': (165000, 0.063, 90), '86A3E3': (132000, 0.0312, 120), '367W51': (500000, 0.055, 360),
          '327Q65': (320000, 0.0321, 180), '837C09': (432000, 0.0516, 240), '863M88': (812000, 0.0628, 360),
          '862W76': (333000, 0.0445, 180), '86NE2B': (446000, 0.0443, 240), '862A42': (778000, 0.0523, 360)}

n_dict = dict()

for x, y, z in m_dict.values():
    n_dict.setdefault(z, []).append((x, y))

print(n_dict)

输出:

{120: [(208000, 0.015), (333000, 0.087), (132000, 0.0312)], 180: [(156000, 0.03), (187000, 0.033), (320000, 0.0321), (333000, 0.0445)], 240: [(720000, 0.065), (241000, 0.0315), (432000, 0.0516), (446000, 0.0443)], 90: [(165000, 0.063)], 360: [(500000, 0.055), (812000, 0.0628), (778000, 0.0523)]}