重命名字典键

新手上路,请多包涵

有没有办法重命名字典键,而无需将其值重新分配给新名称并删除旧名称键;并且不遍历dict键/值?

在 OrderedDict 的情况下,做同样的事情,同时保持那个键的位置。

原文由 rabin utam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 440
1 个回答

对于常规字典,您可以使用:

 mydict[k_new] = mydict.pop(k_old)

这会将项目移动到字典的末尾,除非 k_new 已经存在,在这种情况下它将覆盖就地值。

对于您还想保留顺序的 Python 3.7+ dict,最简单的方法是重建一个全新的实例。例如,将密钥 2 重命名为 'two'

 >>> d = {0:0, 1:1, 2:2, 3:3}
>>> {"two" if k == 2 else k:v for k,v in d.items()}
{0: 0, 1: 1, 'two': 2, 3: 3}

对于 OrderedDict 也是如此,您不能在其中使用字典理解语法,但可以使用生成器表达式:

 OrderedDict((k_new if k == k_old else k, v) for k, v in od.items())

正如问题所要求的那样,修改密钥 本身 是不切实际的,因为密钥是可 散列 的,这通常意味着它们是 不可变 的并且不能被修改。

原文由 wim 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏