2

目前,我正在尝试用 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字典在哪里。

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

4

3 回答 3

10

你可以使用

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

反而。

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

于 2012-06-21T16:39:26.927 回答
4

您可以尝试使用collections.defaultdict

于 2012-06-21T16:42:52.667 回答
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 的值是列表的情况。

于 2012-06-21T16:50:01.167 回答