python - 重命名字典键

标签 python dictionary ordereddictionary

有没有办法重命名字典键,而无需将其值重新分配给新名称并删除旧名称键;并且不遍历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/

相关文章:

c# - C# 中 OrderDictionary 的通用实现显示不明确的方法警告

python - OrderedDict 如何在 Python 中保持有序

dictionary - 如何定义映射中键的枚举,Swagger

c# - 对包含字典的对象列表进行排序

python - 将有序字典的可迭代转换为 pandas 数据帧

python - Pygtk:CellRenderer 耗尽所有垂直空间

python - 未在 url 文件中找到 Django 有效 URL。相反,显示的是循环错误

python - 在python中打开后检查打开的文件是否已被删除

python - 如何使用Python查找图片中的几个关键像素点?

python - 在 Python 中浏览字典