Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python填充词典的更惯用的方法_Python_Dictionary_Idioms - Fatal编程技术网

用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是一个字典 我知道在检查字典中是否有键时,有一种特定的习惯用法,比

目前,我正在尝试用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是一个字典

我知道在检查字典中是否有键时,有一种特定的习惯用法,比如 ,但我只想在这本词典中填入一个列表。

你可以用

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。