假设我有一个列表,其中包含一个字谜字符串。例如
anList = ['aba','baa','aab','cat','tac','act','sos','oss']
我想构造一个字典,它把这个列表的元素作为键,这个元素的语法字符串将作为这个键的值作为一个列表,并且将被添加到列表中的元素不会作为该字典的另一个键重复。例如,如果“baa”已添加到列表中,而该列表是键“aba”的值,则“baa”不能进一步添加为键。输出字典应该看起来像
^{pr2}$
我尝试了很多方法,但问题是列表中添加的元素会再次作为字典的键添加。在
我怎么做?在
Tags:
来自@DYZ和{a2}的答案处理问题中的预期输出要比这一个好得多。在
下面是一个使用^{} 的方法,它附带了一些注意事项。对每个列表元素排序以将其与anagram键进行比较,并附加与键不同的任何anagram。在
注意事项:
这里结合发生的顺序和它们不被组合在一起的可能性:
输出是
^{pr2}$其中,密钥总是按出现顺序排列的第一个anagram,对于长度为可忽略的
n
个单词,算法严格地O(n)
。在如果您想要列表中的所有变音图(包括第一个),它会变得更容易:
结果是
可以使用Counter对象按字母计数对单词进行分组:
现在,将字谜列表转换成字典:
^{pr2}$相关问题 更多 >
编程相关推荐