input: ['abc', 'cab', 'cafe', 'face', 'goo']
output: [['abc', 'cab'], ['cafe', 'face'], ['goo']]
问题很简单:它按变位词进行分组,顺序并不重要。
当然,我可以用C++来完成(那是我的母语)。但是,我想知道是否可以用Python的一行代码来完成此任务。 编辑:如果不可能,也许需要2或3行。 我是Python的新手。
为了检查两个字符串是否为变位词,我使用了排序。
>>> input = ['abc', 'cab', 'cafe', 'face', 'goo']
>>> input2 = [''.join(sorted(x)) for x in input]
>>> input2
['abc', 'abc', 'acef', 'acef', 'goo']
我认为可以通过结合map
等方法实现。但是,我需要使用一个dict
作为哈希表。我还不知道是否能够在一行内完成。欢迎提供任何提示!
xs.group_by { |x| x.chars.sort.join }.values
。我想知道为什么 Python 没有(或者有吗?)一个group_by
函数在标准库中(itertools.groupby()
只能对连续的元素进行分组)。有人知道吗? - tokland['abc','def','cab']
,那么'abc'
和'cab'
是否应该被分组在一起? - Karl Knechtel