python比较set和dict

python比较set和dict,python,dictionary,set,Python,Dictionary,Set,我有一些DB data1,当fetchall看起来像这样时 {u'name': 'abcd', u'id': 3} {u'name': 'efg', u'id': 5} {u'name': 'xyz', u'id': 6} 我还有另一个数据2,不是来自DB 它看起来像set(['abc','abdc','bcd']) 我想找到data1'名称中存在data2,并想返回u'id'number(如果存在) 有没有办法在Python中找到答案?喜欢使用C++ STD::……映射如下… map<

我有一些DB data1,当fetchall看起来像这样时

{u'name': 'abcd', u'id': 3}
{u'name': 'efg', u'id': 5}
{u'name': 'xyz', u'id': 6}
我还有另一个数据2,不是来自DB

它看起来像
set(['abc','abdc','bcd'])

我想找到data1'名称中存在data2,并想返回
u'id'
number(如果存在)

有没有办法在Python中找到答案?喜欢使用C++ STD::……映射如下…
map<string,int> data1
list<string> data2

map<string,int>::iterator it = data1.find(data2.front());
if (it != data1.end()) {
    std::cout << it->second <<\n;
}

我想你要找的是:

for elem in data2:
    try:
        print(data1[elem])
    except KeyError:
        pass

或者甚至不是一个循环,因为C++代码只占用列表的第一个元素:

elem = data2[0]
try:
    print(data1[elem])
except KeyError:
    pass

或者,因为你提到了一个集合,C++集默认是排序的(Python集合是任意顺序的,所以如果你想要最小的值,你必须要它),也许这个:

elem = min(data2)
try:
    print(data1[elem])
except KeyError:
    pass

你似乎哪里都没有元组;只有一份口述和一套。到目前为止你都试了些什么?请发布您的代码。我认为您比 map (只是猜测C++输入)有更多的<代码>向量<代码>…所以不清楚你到底在处理什么,因为你的python示例不是一个有效的python文本,但我只能假设它是一个上下文字典列表。我编辑了我的帖子,添加了我的python代码谢谢你的回答,我编辑了我的帖子,我想第一个就是我的案例
elem = min(data2)
try:
    print(data1[elem])
except KeyError:
    pass