如何用键初始化defaultdict?

新手上路,请多包涵

我有一个列表字典,它应该用默认键初始化。我猜,下面的代码不太好(我的意思是,它可以工作,但我不觉得它是用 pythonic 方式编写的):

 d = {'a' : [], 'b' : [], 'c' : []}

所以我想使用更像 pythonic 的东西 defaultict

 d = defaultdict(list)

但是,我看到的每个教程都会动态设置新键。但在我的例子中,所有的键都应该从一开始就定义好。我正在解析其他数据结构,并且仅当结构中的特定键也包含在我的字典中时,我才将值添加到我的字典中。

如何设置默认键?

原文由 Amir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 355
2 个回答

根据评论,我假设您想要一本符合以下条件的字典:

  1. 用一组键初始化,每个键都有一个空列表值
  2. 具有 defaultdict 行为,可以为不存在的键初始化一个空列表

@Aaron_lab 有正确的方法,但有一种更简洁的方法:

 d = defaultdict(list,{ k:[] for k in ('a','b','c') })

原文由 rovyko 发布,翻译遵循 CC BY-SA 4.0 许可协议

这已经很合理了,但是您可以通过使用标准键列表的字典理解来缩短它。

 >>> standard_keys = ['a', 'b', 'c']
>>> d1 = {key:[] for key in standard_keys}
>>> d2 = {key:[] for key in standard_keys}
>>> ...

原文由 tdelaney 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏