从字典中检索键值对作为另一个字典

时间:2014-11-10 21:26:55

标签: python dictionary unicode

我有一个类似的字典:

{u'message': u'Approved', u'reference': u'A71E7A739E24', u'success': True}

我想检索键值对以供参考,即{ 'reference' : 'A71E7A739E24' }。 我正在尝试使用返回iteritems对的k, v执行此操作,然后将其添加到新词典中。但是,由于某些原因,结果值为unicode而不是str,我不确定这是否是最简单的方法:

ref = {}
for k, v in charge.iteritems():
    if k == 'reference':
        ref['reference'] = v
        print ref

{'reference':u'A71E7A739E24'}

是否有内置方法可以更轻松地完成此操作?或者,至少,避免使用iteritems并简单地返回:

{ 'reference' : 'A71E7A739E24' }

3 个答案:

答案 0 :(得分:2)

使用iteritems的麻烦在于你将查找时间增加到O(n),其中n是字典大小,因为你不再使用哈希表

答案 1 :(得分:1)

我不明白这个问题:
这就是你要做的事情:
    ref={'reference',charge["reference"]}

答案 2 :(得分:1)

如果您只需要获得一个键值对,就像

一样简单
ref = { key: d[key] }

如果某些条件选择了多对,

使用来自可迭代构造函数的dict(如果您的条件依赖于值,第二个版本会更好):

ref = dict(k,d[k] for k in charge if <condition>)
ref = dict(k,v for k,v in charge.iteritems() if <condition>)

或(自2.7)a dict comprehension(以上为语法糖):

ref = {k,d[k] for k in charge if <condition>}
<same as above>