Ваше решение работает для первых двух элементов в списке, но затем dict1
и dict2
сведены в набор, и этот набор помещается в вашу лямбду как x
. Так что теперь x
больше не имеет метода keys()
.
Решение состоит в том, чтобы сделать x набором с самого начала, инициализируя сокращение пустым набором (который оказывается нейтральным элементом объединения).
Попробуйте с инициализатором:
allkey = reduce(lambda x, y: x.union(y.keys()), alldict, set())
Альтернативой без лямбд будет:
allkey = reduce(set.union, map(set, map(dict.keys, alldict)))