当前位置:  开发笔记 > 编程语言 > 正文

Python中map <int,vector <int >>的等价物是什么?

如何解决《Python中map<int,vector<int>>的等价物是什么?》经验,为你挑选了2个好方法。

在C++中经常做这样的事情:

typedef map > 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]

尝试除了这里有点难看.有没有办法告诉字典在字典声明时遇到KeyError时要插入的对象类型?



1> ddaa..:

你想用:

from collections import defaultdict
myIndex = defaultdict(list)
myIndex[someId].append(someVal)

标准库defaultdict对象.

Python文档中的示例用法:

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
        d[k].append(v)

>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]



2> Alastair..:

也许这样的东西:

myIndex = {}
for (someId,someVal) in collection:
    myIndex.setdefault(someId, []).append(someVal)

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有