给定一本字典:
d = {'name': 'Luke', 'age': 43, 'friend': 'Joe'}
我正在尝试构建一个将更改它的函数,以便新字典将是:
d = {'Luke': 'name', 43: 'age', 'Joe':'friend'}
换句话说,键将成为值,而值将成为键。字典的 ID 也不会改变。
我试过这段代码:
dict(map(reversed, d.items()))
我正在使用 python 3.x 任何帮助将不胜感激。
原文由 Guy L 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想在不更改其 id 的情况下反转字典,则需要构建一个临时字典,清除旧字典并更新它。以下是如何使用字典理解来做到这一点。
输出
使用 Python 3.6 进行测试,它保留了普通字典的顺序。
del t
并不是绝对必要的,但如果你不需要它也可以。当然,如果您在函数内执行此t
无论如何,一旦超出范围,就会收集垃圾。执行此操作时需要小心:所有值都必须是不可变对象,任何重复的值都会被破坏。
此外,虽然它是完全合法的,但有些人认为为字典键使用混合类型是不好的风格。如果你想创建字典项目的排序列表,如果键是混合类型,你将无法在 Python 3 中轻松地做到这一点。您不能对混合类型的键进行排序,因为 Python 3 不允许您比较混合类型的对象。