Encontrar y agrupar anagramas por Python
input: ['abc', 'cab', 'cafe', 'face', 'goo']
output: [['abc', 'cab'], ['cafe', 'face'], ['goo']]
El problema es simple: se agrupa por anagramas. El orden no importa.
Por supuesto, puedo hacer esto por C ++ (esa es mi lengua materna). Pero me pregunto si esto se puede hacer en una sola línea porPitó. DITADO: si no es posible, tal vez 2 o 3 líneas. Soy un novato en Python.
Para verificar si dos cadenas son anagrama, solía ordenar.
>>> input = ['abc', 'cab', 'cafe', 'face', 'goo']
>>> input2 = [''.join(sorted(x)) for x in input]
>>> input2
['abc', 'abc', 'acef', 'acef', 'goo']
Creo que se puede hacer combinandomap
más o menos. Pero, necesito usar unadict
como una tabla hash. Todavía no sé si esto es factible en una sola línea. Cualquier sugerencia sería apreciada!