用Python填充词典的更惯用的方法
目前,我正在尝试用Python填充字典,但我认为我所做的有点多余。是否有一种更具Python风格的方法来执行以下操作:用Python填充词典的更惯用的方法,python,dictionary,idioms,Python,Dictionary,Idioms,目前,我正在尝试用Python填充字典,但我认为我所做的有点多余。是否有一种更具Python风格的方法来执行以下操作: 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是一个字典 我知道在检查字典中是否有键时,有一种特定的习惯用法,比
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是一个字典
我知道在检查字典中是否有键时,有一种特定的习惯用法,比如
,但我只想在这本词典中填入一个列表。你可以用
pattern_file_map.setdefault(which_match, []).append(line)
相反
其他人可能建议改为使用collections.defaultdictlist,这是另一个选项,但请注意,这可能会隐藏错误,因为它将以静默方式创建您访问的所有密钥。您可以使用
pattern_file_map.setdefault(which_match, []).append(line)
相反
其他人可能建议改用collections.defaultdictlist,这是另一个选项,但请注意,这可能会隐藏错误,因为它将以静默方式创建您访问的所有密钥。您可以尝试使用。您可以尝试使用。因为您正在添加可能存在的值:
pattern_file_map.setdefault(which_match, []).append(line)
如果使用dict.get:
当然,这两种情况都仅限于dict值为列表的情况。因为您要添加到可能存在的值:
pattern_file_map.setdefault(which_match, []).append(line)
如果使用dict.get:
当然,这两种情况都仅限于dict的值是列表的情况。模式文件\u map.getwhich\u match,[]和模式文件\u map.setdefaultwhich\u match,[]?.getkey,default返回一个值或默认值而不进行设置,需要重新分配到字典中。setdefaultkey,在这种情况下,默认值是更好的选择。我更正了我的答案。pattern_file_map.GetWhat_match,[]和pattern_file_map.SetDefaultWhat_match,[]之间有什么区别?getkey,default返回一个值或默认值而不进行设置,并要求将赋值返回到字典中。setdefaultkey,在这种情况下,默认值是更好的选择。我更正了我的答案。您可以通过将default_factory属性设置为None,使defaultdict像普通字典一样工作,这样会使代码更难看。@StevenRumbalski:这一点很好。请注意,我一点也不反对使用defaultdict。通过将defaultdict的默认工厂属性设置为“无”,您可以使它像普通字典一样工作,这样会使代码更难看。@StevenRumbalski:这一点很好。请注意,我根本不反对使用defaultdict。