如何在Python字典键不变的前提下反转各键对应的值?
实现方案
Python 3.7+ 版本字典原生支持插入顺序保留,直接按以下代码处理即可,完全满足键内容、顺序不变,仅反转映射值的需求:
role_positions = {"role1": 1, "role2": 2, "role3": 3} reversed_values = list(role_positions.values())[::-1] role_positions = dict(zip(role_positions.keys(), reversed_values))
运行后打印role_positions即可得到目标结果:
{'role1': 3, 'role2': 2, 'role3': 1}
实现逻辑
- 调用
values()方法按字典原键顺序取出所有映射值,转为列表后得到[1, 2, 3] - 通过切片
[::-1]将值列表倒序,得到[3, 2, 1] - 用
zip将原顺序的键序列和倒序后的值序列按位置一一配对,转为字典后即可保证键的内容、顺序和原字典完全一致,仅对应的值完成反转。
兼容说明:如果使用Python 3.6及更早版本,原生字典不保证插入顺序,需要使用
collections.OrderedDict替代普通字典做上述操作,目前主流生产环境的Python版本均为3.7及以上,无特殊兼容需求可忽略该说明。
内容的提问来源于stack exchange,提问作者frost
相关产品推荐
相关产品推荐

