2014-03-06 218 views
-1

我该如何做以下操作,但是new_key与old_key之前出现在同一个位置?因此该解决方案将如下所示:替换Python字典中的键的值?

{ 'ONE: 'one', 2:'two', 3:'three' } 

实施例:

dict[new_key] = dict[old_key] 
    del dict[old_key] 

或者在1个步骤:

dict[new_key] = dict.pop(old_key) 

这将提高KeyError异常如果dict [old_key]是未定义的。请注意,这会删除dict [old_key]。

>>> dict = { 1: 'one', 2:'two', 3:'three' } 
>>> dict['ONE'] = dict.pop(1) 
>>> dict 
{2: 'two', 3: 'three', 'ONE': 'one'} 
>>> dict['ONE'] = dict.pop(1) 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
KeyError: 1 
+0

记住,蟒蛇DICS是对'的无序组' –

+0

也许你想要一个名为元组,而不是字典。 或者您可以在迭代时按键排序字典。 你真的*想做什么? – Edward

+0

集合有“OrderedDict”,您可能需要这样做----否则,即使不删除 – vish

回答

1

字典无序;千万不要依赖按键的顺序。因此,更换密钥“维护秩序”是没有意义的。

可以用OrderedDict做到这一点,但它需要将所有密钥插入新的有序字典(因为您不能插入到OrderedDict的中间)。

0

我会使用您所描述的方法替换键,但是记住了Python类型的字典语义无序:

my_dict[new_key] = my_dict.pop(old_key)