如何通过处理原始字典来创建新字典
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)]}
这是说明: 创建一个新的字典(通过处理原始字典),以 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)]}