我有一个列表字典,类似于以下内容:
inventory_dict = {'015': [['015 8000’, '8000’, 0, 10, 20], ['015 9005', '9005', 0, 0, 20], ['015 9010','9010', 0, 0, 20]],
'081’: [['081 5000’, ‘5000’, 30, 10, 20], ['081 7500’, ‘7500’, 0, 10, 20], ['081 8500’,’8500’, 0, 10, 20]],
‘124’: [['124 6500’, ‘6500’, 5, 0, 0], ['124 8500’, ‘8500’, 3, 0, 0], ['124 9000’,’9000’, 0, 0, 100]]}
我想转换为:
inventory_dict = {'015':['015 9005', '9005', 0, 10, 60],
'081’: ['081 8500’,’8500’, 30, 30, 60],
‘124’: ['124 9000’,’9000’, 8, 0, 100]}
我需要一个函数来运行(映射到)每个键/值对,它将多个值列表压缩成一个列表。我认为该函数将采用2个大小的参数,值列为kwargs?类似的东西:
def compile_value(size1, size2, **kwargs):
inv_at_dc = 0
inv_in_store = 0
inv_on_order = 0
target_val = []
for arg in kwargs:
inv_at_dc += arg[2]
inv_in_store += arg[3]
inv_on_order += arg[4]
if any([arg[1] == size1, arg[1] == size2]):
target_val = arg
if target_val == []:
target_val = kwargs[-1:]
target_val[2] = inv_at_dc
target_val[3] = inv_in_store
target_val[4] = inv_on_order
return(target_val)
并且电话会是这样的:
compile_value(9005, 9000, [value list 1],[value list 2], etc…)
此方法是否有效,如果是,如何将函数映射到原始字典以返回修订后的字典?