使用基于字典的数值替换字符串

时间:2018-05-29 21:15:29

标签: python list dictionary

我有一个字符串列表,如下所示:

strings = ["acbd", "abc", "acbde", "abc"]

包含每个字符的数字表示的字典:

dict_ = {"a":[0.4, 0.3, 0.8, -0.1], "b":[1.5, -1.6, 1.2], "c":[7.4, 4.3], "d":[4.23, 0.5, 0.9, 0.5, 1.7], "e":[1.5, 8.1]}

如何为strings中的每个字符串获取数字表示?例如,对于“acbd”,我想按顺序列出组成字符的连接列表:[0.4, 0.3, 0.8, -0.1, 7.4, 4.3, 1.5, -1.6, 1.2, 4.23, 0.5, 0.9, 0.5, 1.7]。我想要一个带有列表列表的输出,每个列表都是字符串的数字表示。

这样做最有效的方法是什么?

我的真实数据有超过100000个字符串和所有26个字符。

1 个答案:

答案 0 :(得分:2)

这是使用itertools.chain和列表理解的一种解决方案。

这对重复的字符串没有优化。我建议你测试你的数据,看看性能是否足够。

from itertools import chain

res = [list(chain.from_iterable(map(dict_.get, i))) for i in strings]

print(res)

[[0.4, 0.3, 0.8, -0.1, 7.4, 4.3, 1.5, -1.6, 1.2, 4.23, 0.5, 0.9, 0.5, 1.7],
 [0.4, 0.3, 0.8, -0.1, 1.5, -1.6, 1.2, 7.4, 4.3],
 [0.4, 0.3, 0.8, -0.1, 7.4, 4.3, 1.5, -1.6, 1.2, 4.23, 0.5, 0.9, 0.5, 1.7, 1.5, 8.1],
 [0.4, 0.3, 0.8, -0.1, 1.5, -1.6, 1.2, 7.4, 4.3]]