python - 根据字典用数值替换字符串

标签 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 个字符。

最佳答案

这是一个使用 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/

相关文章:

python - 在 ipv6 的 sendto 中作为 "address"传递的到底是什么

Python Pandas SQL 风格左连接两个类列表

python - 从 2D python 列表中提取某些元素?

ios - 在我的 ViewController 类中访问函数内部的 Swift 字典变量时出现问题

python - 以简单易读的方式过滤字典

json - 使用 int 键解码嵌套映射

python - 记录循环脚本的开始和结束时间

python - python 中的多处理 imap_unordered

ruby - 惯用的 Ruby - 执行一个函数直到它返回一个 nil,将它的值收集到一个列表中

python - 如何在Python列表中添加/删除多个对象实例?