我有一个字符串列表,如下所示:
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 个字符。
最佳答案
这是一个使用 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]]
关于python - 根据字典用数值替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593062/