Это пример кода, который может решить проблему, но для этого нужно знать все похожие ключи(полагаю с этим проблем не будет их можно получить с помощью того же pymorph3
), которые попадают в группу с одинаковым значением и знать, какое значение для этих ключей. В примере словарь из пар ключ-название числа и значение-значение числа, превращается в словарь из пар ключ-название числа и значение-количества цифр в числе.
nums = {'one': 1, 'two': 2, 'three': 3, 'eleven': 11, 'twelve': 12, 'thirteen': 13} #заменим значение числа на длинну числа(1 для однозначных, 2 для двузначных)
lenth = [(['one', 'two', 'three'], 1), (['eleven', 'twelve', 'thirteen'], 2)] #список кортежей в котором первый элемент-список целевых ключей, второй элемент значение для этих ключей
for i in lenth:
for k, v in nums.items():
if k in i[0]:
nums[k] = i[1]
print(nums) # результат {'one': 1, 'two': 1, 'three': 1, 'eleven': 2, 'twelve': 2, 'thirteen': 2}
В целом вам нужно создать список кортежей, в которых будет храниться 2 элемента(список похожих ключей и одно значение для этих ключей), а затем запустить двойной цикл. В примере используется словарь nums
, у вас это будет словарь info_dict
.