Вот мой (рабочий) Код:Python: найти общие буквы в массиве, не разрезая слово
groupes = [{'description': 'i am a letter', 'exemple': 'e1'},
{'description': 'i am a brick', 'exemple': 'e2'},
{'description': 'i am a dog', 'exemple': 'e3'}]
d = zip(*[g['description'] for g in groupes])
b = []
for a in d:
if len(set(a)) == 1:
b.append(set(a).pop())
else:
break
a = u''.join(b)
l = len(a)
print()
b = [u'{} "{}"'.format(b['description'][l:], b['exemple']) for b in groupes]
b = u', '.join(b).strip()
print(u'{} ({})'.format(a, b))
Он выводит все буквы в общем, и с Reste, поместите его в ()
на примере. Моя проблема в том, когда буквы в общей остановке в середине слова, как это:
groupes = [{'description': 'i am a douche', 'exemple': 'e1'},
{'description': 'i am a dandy', 'exemple': 'e2'},
{'description': 'i am a dog', 'exemple': 'e3'}]
Тогда вы получите:
i am a d (ouche "e1", andy "e2", og "e3")
В то время как я хочу, чтобы получить
i am a (douche "e1", dandy "e2", dog "e3")
Любая идея, как это сделать «путь python»?
С вашим вторым раствором, если я пытаюсь с «pelh» и «помощью», а затем установить («pehl») == set ('help'), тогда я могу получить «true», хотя слова не совпадают. Я прав? –
Да, но помните, что вы вызываете 'set' на возвращаемый объект из' zip'. Поэтому скажите, что ваши описания «help» и '' hepl'', тогда 'set (a)' в вашем коде эквивалентен 'set (('help', 'hepl'))', который все равно даст вам длина 2 с «help»!= 'hepl'' –
Другими словами, он все равно будет работать; Я пробовал и тестировал его :) –