python 批量替换字符串 根据字典_python – 将字符串替换字典应用于字符串列表...

O(n)解决方案:

reps = {'1/2': 'half', '1/4': 'quarter', '3/4': 'three quarters'}

li = ['I own 1/2 bottle', 'Give me 3/4 of the profit']

map(lambda s: ' '.join([reps.get(w,w) for w in s.split()]),li)

Out[6]: ['I own half bottle', 'Give me three quarters of the profit']

#for those who don't like `map`, the list comp version:

[' '.join([reps.get(w,w) for w in sentence.split()]) for sentence in li]

Out[9]: ['I own half bottle', 'Give me three quarters of the profit']

在循环中进行大量替换调用的问题在于它使您的算法成为O(n ** 2).当你有一个长度为3的替换字典时没什么大不了的,但是当它变大时,突然你有一个非常慢的算法,不需要.

正如评论中所指出的,这种方法从根本上取决于能够基于空格进行标记化 – 因此,如果您的替换键中有任何空格(比如说,您想要替换一系列单词),这种方法将无效.然而,能够替换单词是一种比需要替换词组更频繁的操作,所以我不同意那些认为这种方法不够通用的评论者.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值