代码之家  ›  专栏  ›  技术社区  ›  FrostX

如何反转字典中键的值?

  •  -2
  • FrostX  · 技术社区  · 2 年前

    所以我有一句话:

    role_positions = {role1: 1, role2: 2, role3: 3}
    

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

    role_positions = {role1: 3, role2: 2, role3: 1}
    
    1 回复  |  直到 2 年前
        1
  •  6
  •   I'mahdi    2 年前

    您可以获取列表中的值,然后将其反转,用键压缩并返回dict,如下所示:

    # 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()))))
    

    对于较早版本的python,为了确保不同运行时的顺序,我们需要获得输入 dict OrderedDict : ( here 我们可以阅读一个很好的解释)

    我们想我们得到 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()))))