您可以使用生成表达式(如列表推导式,但返回迭代器而不是将临时列表存储在内存中)来执行此操作:
d = OrderedDict(
(
("newCoolHardcodedKey", OrderedDict([item])) if item[0] == "foo" else item
for item in d.items()
)
)
print(d)
OrderedDict([('newCoolHardcodedKey', OrderedDict([('foo', 123)])), ('bar', 456)])
被排序的字典,新元素在哪里foo
。
如果您需要新元素到最后,可能最简单的方法是测试是否d["foo"]
存在,如果存在,则将新的有序 dict 及其硬编码键附加并删除原始条目foo
:
if "foo" in d:
d["newCoolHardcodedKey"] = OrderedDict([("foo", d["foo"])])
del d["foo"]
print(d)
OrderedDict([('bar', 456), ('newCoolHardcodedKey', OrderedDict([('foo', 123)]))])
性能注意事项
如果d
在您的实际应用程序中很大,则第二种解决方案要好得多,因为它会d
在原地更改而不是制作副本。