如何反转Map的键值对?附操作示例
Map键值反转的实现方法
下面针对几种常用编程语言,给出Map键值反转的具体实现,以原Map {1:a, 2:b, 3:c} 反转得到 {a:1, b:2, c:3} 为例:
Java实现
通过遍历原Map的Entry集合,将每个Entry的值作为新Map的键,键作为新Map的值存入:
import java.util.HashMap; import java.util.Map; public class ReverseMapDemo { public static void main(String[] args) { Map<Integer, String> originalMap = new HashMap<>(); originalMap.put(1, "a"); originalMap.put(2, "b"); originalMap.put(3, "c"); Map<String, Integer> reversedMap = new HashMap<>(); for (Map.Entry<Integer, String> entry : originalMap.entrySet()) { reversedMap.put(entry.getValue(), entry.getKey()); } System.out.println(reversedMap); // 输出 {a=1, b=2, c=3} } }
Python实现
利用字典推导式可以快速完成反转:
original_map = {1: 'a', 2: 'b', 3: 'c'} reversed_map = {value: key for key, value in original_map.items()} print(reversed_map) # 输出 {'a': 1, 'b': 2, 'c': 3}
JavaScript实现
如果是普通对象,可通过Object.entries和Object.fromEntries组合实现:
const originalObj = {1: 'a', 2: 'b', 3: 'c'}; const reversedObj = Object.fromEntries( Object.entries(originalObj).map(([key, value]) => [value, key]) ); console.log(reversedObj); // 输出 {a: 1, b: 2, c: 3}
如果是ES6的Map对象,可通过扩展运算符和map方法反转:
const originalMap = new Map([[1, 'a'], [2, 'b'], [3, 'c']]); const reversedMap = new Map([...originalMap.entries()].map(([k, v]) => [v, k])); console.log(reversedMap); // 输出 Map(3) {'a' => 1, 'b' => 2, 'c' => 3}
注意:所有实现都需要注意一个问题——如果原Map中存在重复的值,反转后新Map的键会覆盖之前的条目(因为Map/字典的键必须唯一)。比如原Map是{1:'a', 2:'a'},反转后只会保留最后一个对应的键,即{'a':2}。
内容的提问来源于stack exchange,提问作者wasa-bi
相关产品推荐
相关产品推荐

