Вы можете проверить наличие нескольких экземпляров центрального элемента и добавить дополнительные элементы в четный список:
if odd[od[0]] > 1:
even[od[0]] = odd[od[0]] - 1
Мы делаем -1
, потому что мы должны использовать один элемент в качестве центрального элемента.Теперь проблема в том, что even
не будет отсортировано, поэтому вам нужно отсортировать его.
even = sorted(even.items(), key=lambda kv: kv[0])
import collections
even = collections.OrderedDict(even)
Первая строка кода выше сортирует even
, которая возвращает список кортежей, а третья строка преобразует еговернуться к словарю.
Вот готовый код
from collections import Counter
even={}
odd={}
s=input()
s=list(s)
s.sort()
s=Counter(s)
for i,j in s.items():
if j%2==0:
even.update({i:j})
else:
odd.update({i:j})
print(even,odd)
od=list(odd)
ev=list(even)
if len(odd)==1:
center=od[0]
elif len(odd)>1:
print('Not Possible')
elif len(odd)==0:
center=''
if odd[od[0]] > 1:
even[od[0]] = odd[od[0]] - 1
right=[]
even = sorted(even.items(), key=lambda kv: kv[0])
import collections
even = collections.OrderedDict(even)
for i,j in even.items():
right.append(i*int(j/2))
print(right)
left=right[::-1]
print(left)
pal=right+list(center)+left
palin=''.join(pal)
print(palin)