Python 3 solution; detailed explanation; faster than 97.5%
\nclass Solution:\n    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:\n        h = {}\n        for word in strs:\n            sortedWord = \'\'.jo
```\nclass Solution:\n    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:\n        h = {}\n        for word in strs:\n            sortedWord = \'\'.join(sorted(word))\n            if sortedWord not in h:\n                h[sortedWord] = [word]\n            else:\n                h[sortedWord].append(word)\n        final = []\n        for value in h.values():\n            final.append(value)\n        return final\n```\nWe recall that anagrams are strings which have identical counts of characters. So anagrams, when sorted, result in the same string. We take advantage of this last property.\n\nWe create a dictionary and for each word in the input array, we add a key to the dictionary if the **sorted version of the word** doesn\'t already exist in the list of keys. The key then becomes the sorted version of the word, and the value for the key is an array that stores each anagram of the key. i.e. for every next word that is an anagram, **we would sort the word, find the key that is equal to the sorted form, and add the original word to the list of values for the key**.\n\nAt the end of it, we just add every value in the dictionary to the final array.
['Hash Table', 'Python', 'Python3']