如何处理字典中缺少密钥?

时间:2017-01-05 17:45:14

标签: python dictionary exception-handling

我有这行代码,用第一个字母将 list 中的单词组织成 dictionary

for a in list: dictionary[a[0]].append(a)

问题是,这需要每个字典键都有空列表值。我之前可以通过添加一些额外的代码来实现这一点,但我想知道是否有办法让前一行代码处理这个问题。

这里是伪代码:

  • 如果密钥存在,请插入dictionary[a[0]]
  • 如果没有,请在创建带有空列表的密钥后执行

有没有办法可以在一行代码中执行此操作?

2 个答案:

答案 0 :(得分:7)

您可以使用defaultdict,而不必更改您的代码行:

from collections import defaultdict
dictionary = defaultdict(list)

for a in list: dictionary[a[0]].append(a)

答案 1 :(得分:4)

您可以使用collections.defaultdict

执行此操作
>>> import collections
>>> dict_of_lists = collections.defaultdict(list)
>>> dict_of_lists['foo'].append('bar')
>>> print(dict_of_lists)
defaultdict(<class 'list'>, {'foo': ['bar']})
>>>