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