Создайте словарь один раз:
d = {'1 RK':0}
for n in range(1,44):
d[f'{n} BHK']=n
d[f'{n} Bedroom']=n
>>> d['5 Bedroom']
5
Если вам нужен вызываемый
def f(s,d=d):
return d[s]
>>> f('5 Bedroom')
5
или
class D(dict):
def __call__(self,key):
return self[key]
d = D({'1 RK':0})
for n in range(1,44):
d[f'{n} BHK']=n
d[f'{n} Bedroom']=n
>>> d('21 Bedroom')
21
Разбейте строку, проверьте, является ли она действительной;вернуть результат.
def g(s):
a,b = s.split(maxsplit=1)
if b in ('BHK','Bedroom'):
value = int(a)
elif b == 'RK':
value = 0
else:
raise ValueError
return value
>>> g('1 RK')
0
>>> g('23 Bedroom')
23
>>> g('32 Foo')
Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
g('32 Foo')
File "C:\pyProjects33\tmp.py", line 45, in g
raise ValueError
ValueError
>>>
Построить соответствующие строки в цикле:
def f(s):
if s == '1 RK':
return 0
for n in range(1,44):
if s in (f'{n} BHK',f'{n} Bedroom'):
return n