如何解决如何在 Python 3 中更新 OrderedDict 中的键值?
这是一个最小的可重现示例:
from collections import OrderedDict
d = OrderedDict([('foo',123),('bar',456)])
所以我想检查 foo
中是否有 d
键,如果有,我想将它重写为新硬编码键的列表的单个值:
print(d)
ordereddict([('bar',456),('newCoolHardcodedKey',[ordereddict([('foo',123)])])])
解决方法
您可以使用生成表达式(如列表推导式,但返回迭代器而不是将临时列表存储在内存中)来执行此操作:
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)])
正在排序的 dict,新元素是 foo
所在的位置。
如果您需要新元素到最后,最简单的方法是测试 d["foo"]
是否存在,如果存在,则将新排序的 dict 附加其硬编码键,并删除 foo
的原始条目{1}}:
if "foo" in d:
d["newCoolHardcodedKey"] = OrderedDict([("foo",d["foo"])])
del d["foo"]
print(d)
OrderedDict([('bar',456),('newCoolHardcodedKey',123)]))])
性能注意事项
如果 d
在您的实际应用程序中很大,那么第二种解决方案要好得多,因为它更改了 d
而不是制作副本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。