标签: map

Python:获取数据的函数总是返回None

我有这个词典列表:

cust = [
        {"id": 1, "name": u"name 1", "bill_amount": 1000},
        {"id": 2, "name": u"name 2", "bill_amount": 5000},
        {"id": 3, "name": u"name 3", "bill_amount": 7600},
        {"id": 4, "name": u"name 4", "bill_amount": 30}
       ]
Run Code Online (Sandbox Code Playgroud)

我想得到一个名单的清单.

试试这个:

def getName(x): x["name"]
print map(getName, cust)
Run Code Online (Sandbox Code Playgroud)

返回此:

[None, None, None, None]
Run Code Online (Sandbox Code Playgroud)

为什么?我错过了一些明显的东西吗

python dictionary list map

0
推荐指数
1
解决办法
246
查看次数

C++地图定义基础知识

我有一个我无法解决的问题.假设我有这个地图定义:

map<string, int16_t> Registers;
Run Code Online (Sandbox Code Playgroud)

但有时,我需要存储一个unsigned int16_t而不是一个signed int16_t.我怎样才能做到这一点?

谢谢.

c++ map

0
推荐指数
1
解决办法
220
查看次数

在地图矢量中找到对

我正在使用以下函数试图在地图矢量中查找地图元素的键.

Entry* SymTab::lookup(const char* name)
{
for (int i=0;i<table.size();i++) //table is the vector
 {
  map<const char*, Entry, ltstr>::iterator its= table.at(i).find(name); 
    if (its != cur.end())
    {
    Entry* obj = &its->second;
    cout<<(*its).first<<endl;
    return obj;
    }


  }
}     
Run Code Online (Sandbox Code Playgroud)

该函数正确返回第一个向量索引中的任何项的值(at(0)).但每当我尝试访问第二个索引中的元素时(在(1)处),它就会出现段错误.我确信已正确插入地图并填充在第二个索引处.

有没有人在这看到这个问题?

c++ stl vector map

0
推荐指数
1
解决办法
426
查看次数

它无法编译c ++映射结构,如map <A,pair <B,C >>

我有一个带有stl map的c ++代码,第二个参数被定义为一对

int keys[10] = {1, 1, 1, 2, 3, 4, 5, 7, 6, 6};
char s[5];
map< unsigned int, pair<string, int> > tmpMap;

for (int i=0; i<10; i++)
{
  if (tmpMap.find(keys[i])==tmpMap.end())
  {
    sprintf(s, "%i", keys[i]);
    tmpMap.insert(make_pair(keys[i], make_pair(s, 1)));
  }
  else tmpMap[keys[i]].second++;
}

for (map< unsigned int, pair<string, int> >::iterator it=tmpMap.begin();   it!=tmpMap.end(); ++it)
{
cout << (*it).first << "  " << (*it).second << endl;
}
Run Code Online (Sandbox Code Playgroud)

但它没有编译,它说,没有匹配运算符<<.但是(*it).first和(*it).second只是字符串和int,为什么它不起作用?

c++ map

0
推荐指数
1
解决办法
134
查看次数

C++:从"for each"循环中删除map中的值

对于std::vector<double*> v;我可以double通过调用删除s

std::for_each(v.begin(), v.end(), (void(*)(void* a))operator delete);
Run Code Online (Sandbox Code Playgroud)

现在,如果我有std::map<int, double*> m;,我可以在不使用显式循环,增强或非标准STL扩展的情况下执行类似的操作吗?即什么是???

std::for_each(m.begin(), m.end(), ???);
Run Code Online (Sandbox Code Playgroud)

c++ foreach stl function-pointers map

0
推荐指数
2
解决办法
1579
查看次数

在地图中打印所有对

PhonebookEntry pb1("olaNormann");
pb1.add("Home","11234567");
pb1.add("Work","11065432");
cout << pb1.getNumbers()["Home"] << endl;
cout << pb1.getNumbers()["Work"] << endl;

map<string,string>::iterator it;
for(it = pb1.getNumbers().begin(); it != pb1.getNumbers().end(); ++it){
    cout << (*it).first << ": " << (*it).second << endl;
}
Run Code Online (Sandbox Code Playgroud)

我使用前两个cout来确保正确添加两对.代码将使用标签Home和Work打印出前两个数字,但无法在for循环中打印这两个数字.for循环只打印出"Home:11234567".谁能明白为什么?下面是我的头文件,其中实现了相关方法.

class PhonebookEntry{
private:
    std::string name;
    std::map<std::string, std::string> numbers;
public:
    PhonebookEntry(std::string name) : name(name){}
    std::map<std::string, std::string> getNumbers() const {return numbers;}

    void add(const std::string label,const std::string number){numbers[label] = number;}
};
Run Code Online (Sandbox Code Playgroud)

c++ map

0
推荐指数
1
解决办法
1107
查看次数

从地图中获取HashSet并更改后,我是否必须将其放回去?

它的工作原理如下:

Set<Integer> nums = numMap.get(id);
nums.add(new Integer(0));
// now do i have to:
numMap.put(id,nums)?
// or is it already stored?
Run Code Online (Sandbox Code Playgroud)

问候&& tia noircc

java map pass-by-reference

0
推荐指数
1
解决办法
228
查看次数

在删除元素时无法使用STL映射的迭代器

我正在遍历STL映射以删除元素并进行一些清理.不幸的是,我的程序崩溃了++ iter系列.我在如何循环地图上做错了吗?

std::map<string,BoneHierarchy* >::iterator iter = boneMap.begin();
while(iter != boneMap.end()) {
    string playerName = iter->first;
    boneMap[playerName]->clear();
    boneQueue->push(boneMap[playerName]);
    boneMap.erase(iter);
    ++iter;
}
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl map

0
推荐指数
1
解决办法
1451
查看次数

map max effective insert

这是一些工作代码:

std::pair<typename std::map< time_t, T >::iterator, bool> ret;    
ret = prt_map->insert ( std::pair< time_t, T >( seconds , value ) );
if (ret.second == false) // exists
{
 ... update exising value
}
Run Code Online (Sandbox Code Playgroud)

我想将其升级到最高效的插入代码,并提示插入需要从--prt_map-> end(); 就像是:

  prt_map->insert ( --prt_map->end(), std::pair< time_t, T >( seconds , value ) );
Run Code Online (Sandbox Code Playgroud)

但是这个插入函数prototupe不会返回std :: pair与bool通知添加或不添加的值(检查是否存在并更新如果是这样的...如何解决这个问题才能更新现有值?

c++ insert map

0
推荐指数
1
解决办法
619
查看次数

字符串和int的映射

我想用C++制作DVD租赁应用程序.我已经完成了客​​户类的基础知识,另一个类是持有CustomerDB的客户ID.每个客户都有一个唯一的ID.
我想在进一步执行程序之前测试CustomerDB,但是在编译程序时出现错误.

这是我写的代码:

头文件:

// DVD_App.h - Header File

#include <string>
#include <map>

using namespace std;

enum Status {ACTIVE, INACTIVE};

class Customer {
    private:
        string id;
        string name;
        string address;
        Status status;

    public:
        Customer (const string&, const string&, const Status);
        string &getId () { return id; }
};

class CustomerDB {
    private:
        static map<string, int> idList;

    public:
        static void addNewToIdList (const string &threeLetterOfName) {
            if (!doesThreeLettersOfNameExist(threeLetterOfName))
                idList.insert(pair<string, int>(threeLetterOfName, 0));
        }

        static bool doesThreeLettersOfNameExist (const string &threeLetterOfName) {
            map<string, int>::iterator i …
Run Code Online (Sandbox Code Playgroud)

c++ string map

0
推荐指数
1
解决办法
4941
查看次数