代码之家  ›  专栏  ›  技术社区  ›  Jack Arnestad

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

  •  3
  • Jack Arnestad  · 技术社区  · 7 年前

    我有如下字符串列表:

    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 回复  |  直到 7 年前
        1
  •  2
  •   jpp    7 年前

    这里有一个解决方案使用 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]]