【think python】判断一组 `key: str` 中是否存在一个 key `in` a_string?
#think-python#
判断一组 key: str
中是否存在一个 key in
a_string?是否有更好的办法?
【需求】
判断「一组」key 中,是否存在一个 key 在(in
) string 中?
【当前实现】
mapping = {'合租': '合租', '整租': '整租', }
data = [
'合租(4室1厅2卫)',
'合租(2室1厅1卫)',
'整租(3室1厅)',
'整租(2室1厅1卫)',
]
def reclassify(s: str):
for key in mapping:
if key in s:
return mapping[key]
return s
for i in range(len(data)):
data[i] = reclassify(data[i])
【问题】
主要是 line 13~line 16 有更好的写法吗?
总感觉效率有点低(时间复杂度略高)
回答:
for k in mapping: for i in range(len(data)):
if k in data[i]:
data[i] = k
这种写法未必效率低。提供另一种使用正则的思路吧
import repattern = re.compile('|'.join(['({})'.format(i) for i in mapping]))
for i in range(len(data)):
search_result = re.search(pattern, data[i])
if search_result:
data[i] = search_result.group()
回答:
无非就是判断一个字符串是否为另一个字符串的子串
你可以这样,
- 用
in
操作触发魔术方法__contains__(self, key, /)
- 用字符串的实例方法
find(...)
search = '合租'target = '合租(4室1厅2卫)'
print(search in target) # True
search='整租'
print(target.find(search) !=-1) # False
以上是 【think python】判断一组 `key: str` 中是否存在一个 key `in` a_string? 的全部内容, 来源链接: utcz.com/a/157019.html