def dict_get_recursive(source, path):
current_dict = source
for path_idx, path_key in enumerate(path):
if path_idx == len(path)-1:
return current_dict.get(path_key, None)
current_dict = current_dict.get(path_key, None)
if current_dict is None:
return None
new_dic['Name_1'] = dict_get_recursive(source_1,['key_1','key_2','key_3'])
new_dic['Name_2'] = dict_get_recursive(source_2,['key_1','key_2'])
new_dic['Name_3'] = dict_get_recursive(source_1,['key_1','key_2','key_3','key_4'])
x = lambda arr, string: next((i for i in arr if i in string), None)
print(x(st, md))
# если список st меняется не для каждой строки,
# имеет смысл его подготовить один раз, заранее
parts = '|'.join(list(map(re.escape, st)))
regexp = re.compile(f'\\b(?:{parts})\\b', re.IGNORECASE)
# при обработке строки md
if match := regexp.search(md):
print(x.group(0))
str1 = "iii common lll part xxx";
str2 = "jjj common mmm part yyy";
str1 = "iii common lll part xxx";
str2 = "jjj common part yyy";
" common part "
from urllib import parse
import json
text = '{"req":[{"index":"prod","param":"q=%s&hits=4&filters=live%3A1"}]}'
arr = json.loads(text)
qs = parse.parse_qs(arr['req'][0]['param'])
qs['q'] = model
arr['req'][0]['param'] = parse.urlencode(qs,doseq=True)
text = json.dumps(arr)
def get_value_from_dict(dct, path):
if not path:
return
key = path[0]
new_path = path[1:]
if curr_value := dct.get(key, None):
if new_path:
if type(curr_value) == dict:
if new_path:
return get_value_from_dict(curr_value, new_path)
else:
return
else:
return curr_value
d={
"lvl1_1": {
"lvl2_1": {
"lvl3_1": "value",
"lvl3_2": {
"lvl4_1": "value"
},
"lvl2_2": "value"
}
}
}
print(get_value_from_dict(d, ["lvl1_1", "lvl2_1", "lvl3_2", "lvl4_1"]))
black_list = list('1234567890h')
black_list.sort()
tested_list = list('dabeghfc')
tested_list.sort()
black_last, tested_last = len(black_list)-1, len(tested_list)-1
black_idx, tested_idx = 0, 0
black_item, tested_item = black_list[black_idx], tested_list[tested_idx]
while True:
if black_item < tested_item and black_idx < black_last:
# элемент в чёрном списке меньше - идём вперёд по чёрному списку, если есть куда
black_idx += 1
black_item = black_list[black_idx]
elif black_item > tested_item and tested_idx < tested_last:
# элемент в чёрном списке больше - идём вперёд по тестирумому списку, если есть куда
tested_idx += 1
tested_item = tested_list[tested_idx]
else: # либо элементы равны (есть вхождение), либо один из списков закончился
break
print('Есть вхождение!' if black_item == tested_item else 'Нет вхождения')