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)

代わりは。

他の人は代わりに使用することを提案するかもしれませんがcollections.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 に答える