我正在尝试使用 map、filter、reduce 编写一个单行函数,它采用字典列表 (Ld) 并返回包含在所有字典中的键的集合(键的交集)。
下面的函数试图做到这一点。如果键在特定字典中,则映射部分返回 True/False 的集合。如果所有这些元素都为真,则reduce 返回True。最后,过滤部分过滤掉所有不满足这些条件的键。
def intersection_of_keys(Ld):
return filter(lambda key: reduce(lambda x, y: x*y, map(lambda dic: key in dic, Ld)), all_keys(Ld))
#For example:
d1 = {1:12, 3:4, 2:5}
d2 = {1:6, 3:8, 0:9}
d3 = {3:0, 1:11, 2:3}
Ld = [d1, d2, d3]
print(intersection_of_keys(Ld))
代码应该打印一个包含 1 和 3 的集合。但是地图部分内的变量key是未定义的。任何想法为什么不将键传递到映射的 lambda 函数定义中?以及如何解决这个问题的任何想法?
慕码人8056858
ITMISS
天涯尽头无女友
相关分类