基于地图替换 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}
是单个元素。
假设我们有一个 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}
是单个元素。