用Python填充字典的更惯用的方法

时间:2012-06-21 16:37:55

标签: python dictionary idioms

目前,我正在尝试用Python填充字典,但我认为我所做的有点多余。是否有更多的pythonic方式来执行以下操作:

if not pattern_file_map.get(which_match):
    pattern_file_map[which_match] = [line]
else:
    pattern_file_map[which_match].append(line)

其中pattern_file_map是字典。

我知道在检查字典中是否有密钥时会有一定的习惯用法  this question,但我只是想用列表填写这本词典。

3 个答案:

答案 0 :(得分:10)

您可以使用

pattern_file_map.setdefault(which_match, []).append(line)

代替。

其他人可能会建议使用collections.defaultdict(list),这是另一种选择,但要注意这可能会隐藏错误,因为它会默默地创建您访问的所有密钥。

答案 1 :(得分:4)

您可以尝试使用collections.defaultdict

答案 2 :(得分:0)

由于您要添加可能存在的值:

pattern_file_map.setdefault(which_match, []).append(line)

如果使用dict.get()

li = pattern_file_map.get(which_match, [])
li.append(line)
pattern_file_map[which_match] = li

当然,这两种情况仅限于你的dict值是列表的情况。