擅长:python、mysql、java
<p>来自<a href="https://stackoverflow.com/users/4492932/dyz">@DYZ</a>和{a2}的答案处理问题中的预期输出要比这一个好得多。在</p>
<p>下面是一个使用<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">^{<cd1>}</a>的方法,它附带了一些注意事项。对每个列表元素排序以将其与anagram键进行比较,并附加与键不同的任何anagram。在</p>
<pre><code>from collections import defaultdict
anagrams = ['aba','baa','aab','cat','tac','act','sos','oss']
d = defaultdict(list)
for a in anagrams:
key = ''.join(sorted(a))
if key != a:
d[key].append(a)
print(d)
# {'aab': ['aba', 'baa'], 'act': ['cat', 'tac'], 'oss': ['sos']}
</code></pre>
<p>注意事项:</p>
<ul>
<li>始终使用升序排序的anagram版本作为dict键,这与问题中的示例输出不完全匹配</li>
<li>如果升序排序的anagram版本不在列表中,此方法将添加一个以前不存在的anagram作为dict键</li>
</ul>