基于地图替换 K&V 的最佳方法?

Best way to substitute both K&V based on a map?

假设我们有一个 map-dict 和 data-dict :

m = { 1:2, 4:5, 3:7 }
data = { 1:7, 4:1, 3:6 }

我们应该根据 "m" :

替换 "data" 中所有出现的键和值
data1 = { 2:7, 5:2, 7:6 }

最短、最快的方法是什么?

我正在考虑将数据转换为列表进行替换并转换回字典。但即使这样也太复杂了。

可以将列表转换为字典:

dict(zip(lst[0::2], lst[1::2]))

将字典转换为列表是:

data.items()

但是这个不是 return 列表,而是元组列表,这让事情变得过于复杂,即我们需要另外扁平化这个 LoT。

想知道有没有更好的方法,重点是speed/mem。

听写理解:

data1 = {m.get(k, k): m.get(v, v) for k, v in data.items()}

请注意,您的示例中的 {4: 1, 4: 6} 是单个元素。