解压字典列表以获取所有键

Unpacking a list of dictionaries to get all their keys

我正在编写一个脚本来在字典列表中添加缺失的键并为它们分配默认值。我首先构建一组出现在一个或多个词典中的所有可能的键。

我为此改编了一段不错的代码,但我无法完全理解它的工作原理:

all_keys = set().union(*dicts)

根据我的理解,我的字典列表 dicts 被解压缩为 union 方法的单个(字典)参数,它将它们与空集合并在一起,给我一组键。

我不清楚为什么这段代码只使用字典的键来构建集合,同时丢弃它们的关联值。这实际上是我想要发生的事情,但这里如何实现它是模糊的。例如,我知道用单个 * 解包字典只解包键,这看起来就像这里发生的事情,除了在我的代码中我没有明确解包字典的内容,只有包含它们的列表.

有人可以更明确地向我解释这里的幕后情况吗?

如果您写道:

s1 = set()
s2 = s1.union(iterable1, iterable2, iterable3)

union() 方法将解压每个 iterableX 以获得要与 s1 组合的值。

您的代码只是通过展开 dicts 来获取所有可迭代对象,因此它等同于

s2 = s1.union(dicts[0], dicts[1], dicts[2], ...)

它解压每个字典,获取它们的键。