我有一个字符串列表,如下所示:
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个字符。
答案 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]]