有没有办法重命名字典键,而无需将其值重新分配给新名称并删除旧名称键;并且不遍历dict键/值?
对于OrderedDict,做同样的事情,同时保持那个键的位置。
最佳答案
对于常规字典,您可以使用:
mydict[k_new] = mydict.pop(k_old)
这会将项目移动到字典的末尾,除非 k_new
已经存在,在这种情况下它将就地覆盖该值。
对于 Python 3.7+ 字典,您还想保留顺序,最简单的方法是重建一个全新的实例。例如,将键 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
也是如此,您不能使用 dict 理解语法,但可以使用生成器表达式:
OrderedDict((k_new if k == k_old else k, v) for k, v in od.items())
修改 key 本身,正如问题所要求的那样,是不切实际的,因为 key 是 hashable这通常意味着它们是 immutable并且无法修改。
关于python - 重命名字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475384/