如何将字典中相同值映射到另一字符串列表并实现字符串转数字
复用已构建的字典实现单词到数字的一致映射
嘿,这事儿其实很简单——核心就是保留并复用你已经创建好的字典d,它已经帮你把所有单词和对应的数字绑定好了,直接用它来处理列表B就行!
具体实现步骤
- 首先确保你保留了之前从字符串A生成的字典
d,它是我们的“映射对照表”。 - 遍历列表B中的每个子字符串,对每个字符串做和A相同的预处理:转小写、分割成单个单词。
- 用字典
d去查找每个单词对应的数值,把结果整理成嵌套列表就是你要的res_B。
完整代码示例
# 你的原始代码:从字符串A构建映射字典d A = 'hello world how are you doing' d = {} res_A = [d.setdefault(word, len(d)+1) for word in A.lower().split()] # 处理列表B的代码 B = ['hello world how', 'hello are' ,'hello', 'hello are you doing'] # 用列表推导式一步到位生成res_B res_B = [[d[word] for word in s.lower().split()] for s in B] print(res_B) # 输出结果:[[1, 2, 3], [1, 4], [1], [1, 4, 5, 6]]
代码解释
s.lower().split():和处理A时保持一致,确保大小写不影响匹配(比如如果B里有"Hello"也能正确映射到1)。d[word]:直接通过字典获取单词对应的数值,因为你的B里所有单词都来自A,所以不用担心KeyError。如果后续B可能出现新单词,可以改用d.get(word, 0)(0作为新单词的默认值,你也可以换成其他数字)。
这种方法既保证了映射的一致性,又简洁高效,完全符合你的需求~
内容的提问来源于stack exchange,提问作者user14385051
相关产品推荐
相关产品推荐

