目前,我正在尝试用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,但我只是想用列表填写这本词典。
答案 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值是列表的情况。