将函数映射到列表的字典

时间:2016-05-20 15:58:32

标签: python map-function

我有一个列表字典,类似于以下内容:

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…)

此方法是否有效,如果是,如何将函数映射到原始字典以返回修订后的字典?

0 个答案:

没有答案