我有这个词典列表:
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)
为什么?我错过了一些明显的东西吗
我有一个我无法解决的问题.假设我有这个地图定义:
map<string, int16_t> Registers;
Run Code Online (Sandbox Code Playgroud)
但有时,我需要存储一个unsigned int16_t而不是一个signed int16_t.我怎样才能做到这一点?
谢谢.
我正在使用以下函数试图在地图矢量中查找地图元素的键.
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)处),它就会出现段错误.我确信已正确插入地图并填充在第二个索引处.
有没有人在这看到这个问题?
我有一个带有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,为什么它不起作用?
对于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) 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) 它的工作原理如下:
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
我正在遍历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) 这是一些工作代码:
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++制作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)