如何反转字典中键的值?

Fro*_*stX 0 python reverse dictionary

所以我有这个命令:

role_positions = {role1: 1, role2: 2, role3: 3}
Run Code Online (Sandbox Code Playgroud)

我如何反转它的值?像这样:

role_positions = {role1: 3, role2: 2, role3: 1}
Run Code Online (Sandbox Code Playgroud)

I'm*_*hdi 11

您可以获取列表形式的值,然后反转它们并使用键进行压缩并返回字典,如下所示:

# python_version > 3.8
>>> dict(zip(role_positions, reversed(role_positions.values())))
{'role1': 3, 'role2': 2, 'role3': 1}

# python_version < 3.8
>>> dict(zip(role_positions, reversed(list(role_positions.values()))))
Run Code Online (Sandbox Code Playgroud)

对于旧版本的Python,为了确定不同运行时的顺序,我们需要输入dict以下内容OrderedDict:(这里我们可以阅读一个很好的解释)

我们假设我们得到OrderDict作为输入,下面的代码仅用于创建OrderDict. 如果我们在旧版本中使用以下代码,也许我们会得到不同的 OrderedDict (因为role_positions可能会得到不同的顺序),但我们假设用户输入OrderDict

from collections import OrderedDict
# we supoose we input below dict
o_dct = OrderedDict((k, v) for k,v in role_positions.items())
dict(zip(o_dct, reversed(list(o_dct.values()))))
Run Code Online (Sandbox Code Playgroud)

  • `reversed(...)` 在没有 `list()` 的情况下也可以工作 (3认同)
  • @Imahdi 它可以在没有 `list` 的情况下工作(在 Python 3.8+ 中),也可以在没有 `.keys()` 的情况下工作 (2认同)