根据地图替换K& V的最佳方法?

时间:2018-03-11 04:22:01

标签: python list dictionary mapping substitution

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

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

我们应该在" data"中替换所有出现的key& val;根据" m" :

data1 = { 2:7, 5:2, 7:6 }

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

我正在考虑将数据转换为列表进行替换并转换回dict。但即便如此也是如此。

将列表转换为dict即可:

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

将dict转换为list是:

data.items()

但是这个没有返回列表,而是元组列表,它们使得事情太复杂,即我们需要额外压扁这个LoT。

我想知道是否有更好的方法,重点是速度/记忆。

1 个答案:

答案 0 :(得分:2)

dict comprehension:

var description: String {
    let topDivider = "### STACK ###\n"
    let bottomDivider = "\n############\n"
    let stackElements = self.array.reversed().map { $0.description }.joined(separator: "\n")
    return topDivider + stackElements + bottomDivider
}

请注意,示例中的data1 = {m.get(k, k): m.get(v, v) for k, v in data.items()} 是单个元素。