在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]
尝试使用except语句有点丑陋。在字典声明时,是否有一种方法可以告诉字典遇到KeyError时要插入的对象类型?
key in dict
可能更可取。无论如何,dict.setdefault()或collections.defaultdict都可以解决这个问题。 - jfs