C++ では、次のようなことがよくあります。
typedef map<int, vector<int> > MyIndexType;
次に、次のように使用します。
MyIndexType myIndex;
for( ... some loop ...)
{
myIndex[someId].push_back(someVal);
}
マップにエントリがなかった場合、コードは新しい空のベクターを挿入し、それに追加します。
Python では、次のようになります。
myIndex = {}
for (someId,someVal) in collection:
try:
myIndex[someId].append(someVal)
except KeyError:
myIndex[someId] = [someVal]
try except はここでは少し醜いです。ディクショナリ宣言時に KeyError が発生したときに挿入するオブジェクト タイプをディクショナリに伝える方法はありますか?