Python: 是否可以使用 reduce() 来做同样的事情?
Python: Is it possible to do the same using reduce()?
这是一个 assaigment 的一部分,因此需要使用 reduce 函数(或过滤器,尽管我没有看到)来完成它,因此我想知道这是否可能。
我有两个指令:
takeOff_Airport = {'LPPD': 4, 'DAAS': 1, 'EDDH': 16, 'LFLL': 17, 'LFPO': 30}
landing_Airport = {'LFPO': 12, 'LPPD': 7, 'UUEE': 11, 'DAAS': 7, 'LFSL': 1}
应用以下代码后:
airports = (sorted([[k, [v1+landing_Airport[k], v1,landing_Airport[k]]] for k,
v1 in takeOff_Airport.items() if k in landing_Airport],
key=lambda kv:kv[1], reverse=True))
我得到了预期的结果:
airports: [['LFPO', 42, 30, 12], ['LPPD', 11, 4, 7], ['DAAS', 8, 1, 7]]
'airports' 正在打印的是一个列表列表,其中包含两个字典(着陆和起飞)中的常见机场名称,并添加每个字典值的总和以及每个字典 [key:value ].
是否可以在 reduce 函数中使用一些 lambda 表达式来实现上述内容?也许在过滤器中?
绝对有可能。
lambda 将数组 x
作为参数,该数组将结果和 key
聚合到机场词典之一(在我的示例中为 takeOff_Airport
)。
如果key存在于其他机场字典中,则将[key,各字典值之和,takeOff值,landing值]组成的元素加入数组x
。否则,数组 x
保持不变。
将 lambda 传递给 reduce 函数,将 x
的初始值设置为一个空数组,它将生成所需的结果。
airports = reduce(lambda x, key : x + [[key, takeOff_Airport[key] + landing_Airport[key], takeOff_Airport[key], landing_Airport[key]]] if key in landing_Airport else x, takeOff_Airport, [])
结果:
>>> airports
[['LPPD', 11, 4, 7], ['DAAS', 8, 1, 7], ['LFPO', 42, 30, 12]]
这是一个 assaigment 的一部分,因此需要使用 reduce 函数(或过滤器,尽管我没有看到)来完成它,因此我想知道这是否可能。
我有两个指令:
takeOff_Airport = {'LPPD': 4, 'DAAS': 1, 'EDDH': 16, 'LFLL': 17, 'LFPO': 30}
landing_Airport = {'LFPO': 12, 'LPPD': 7, 'UUEE': 11, 'DAAS': 7, 'LFSL': 1}
应用以下代码后:
airports = (sorted([[k, [v1+landing_Airport[k], v1,landing_Airport[k]]] for k,
v1 in takeOff_Airport.items() if k in landing_Airport],
key=lambda kv:kv[1], reverse=True))
我得到了预期的结果:
airports: [['LFPO', 42, 30, 12], ['LPPD', 11, 4, 7], ['DAAS', 8, 1, 7]]
'airports' 正在打印的是一个列表列表,其中包含两个字典(着陆和起飞)中的常见机场名称,并添加每个字典值的总和以及每个字典 [key:value ].
是否可以在 reduce 函数中使用一些 lambda 表达式来实现上述内容?也许在过滤器中?
绝对有可能。
lambda 将数组 x
作为参数,该数组将结果和 key
聚合到机场词典之一(在我的示例中为 takeOff_Airport
)。
如果key存在于其他机场字典中,则将[key,各字典值之和,takeOff值,landing值]组成的元素加入数组x
。否则,数组 x
保持不变。
将 lambda 传递给 reduce 函数,将 x
的初始值设置为一个空数组,它将生成所需的结果。
airports = reduce(lambda x, key : x + [[key, takeOff_Airport[key] + landing_Airport[key], takeOff_Airport[key], landing_Airport[key]]] if key in landing_Airport else x, takeOff_Airport, [])
结果:
>>> airports
[['LPPD', 11, 4, 7], ['DAAS', 8, 1, 7], ['LFPO', 42, 30, 12]]