Python 在订单中插入“钥匙后面的信息”;"富",;(就地)

Python 在订单中插入“钥匙后面的信息”;"富",;(就地),python,ordereddictionary,Python,Ordereddictionary,我想在或eddict中的给定键后面插入一个键 例如: my_orderded_dict=OrderedDict([('one', 1), ('three', 3)]) 我想把“两个”——>2放在正确的地方 在我的情况下,我需要将OrdedDict更新到位 背景 Django的SortedDisct(具有插入())被删除:另一个SO问题()不处理就地更新。我不认为我的问题是重复的。这个示例代码确实成功地允许在适当的位置插入新项目,但是代码速度太慢了(),因为代码创建了一个新的集合。Ordered

我想在
或eddict
中的给定键后面插入一个键

例如:

my_orderded_dict=OrderedDict([('one', 1), ('three', 3)])
我想把“两个”——>2放在正确的地方

在我的情况下,我需要将
OrdedDict
更新到位

背景


Django的SortedDisct(具有
插入()
)被删除:

另一个SO问题()不处理
就地更新。我不认为我的问题是重复的。这个示例代码确实成功地允许在适当的位置插入新项目,但是代码速度太慢了(),因为代码创建了一个新的
集合。OrderedDict
,然后在旧的
OrderedDict
上执行
清除
,然后在旧的
OrderedDict
上执行
更新(清除旧词典和更新代价高昂,因为清除涉及迭代和删除所有项。更新代价高昂,因为它涉及迭代新旧词典和插入词典。)@TrevorBoydSmith请随时更新我的代码以提高性能。如果您不确定,请先将您的想法写给我。我会看一看。我对您的解决方案投了赞成票:)。我只是警告那个些并没有戒心的未来人士,他们可能并没有意识到绩效的影响。(速度慢得令人望而却步的部分不是您的实现。考虑到需求和有序字典的API,您的实现已经足够好了……因此,您的限制也没有问题。)
from collections import OrderedDict # SortedDict of Django gets removed: https://code.djangoproject.com/wiki/SortedDict

my_orderded_dict=OrderedDict([('one', 1), ('three', 3)])

new_orderded_dict=my_orderded_dict.__class__()
for key, value in my_orderded_dict.items():
    new_orderded_dict[key]=value
    if key=='one':
        new_orderded_dict['two']=2
my_orderded_dict.clear()
my_orderded_dict.update(new_orderded_dict)
print my_orderded_dict