📌  相关文章
📜  使用 List 和 Dictionary 在Python中一起打印字谜

📅  最后修改于: 2022-05-13 01:55:51.506000             🧑  作者: Mango

使用 List 和 Dictionary 在Python中一起打印字谜

给定一个单词数组,一起打印所有字谜?例子:

Input : arr = ['cat', 'dog', 'tac', 'god', 'act']
Output : 'cat tac act dog god'

这个问题有现有的解决方案,请参考 Anagrams 和 Given a sequence of words, print all anagrams together links。我们将在Python中使用 List 和 Dictionary 数据结构来解决这个问题。方法很简单:

  • 遍历字符串列表。
  • 将每个字符串按升序排序,并将排序后的值视为Key ,将原始值视为对应键的Value 。检查字典中是否不存在键,这意味着它是第一次出现,因此将一个空列表映射到并在其中附加值,如果键已经存在,则简单地附加值。
  • 现在每个键都将包含一个字谜字符串列表。
Python3
# Function to return all anagrams together
def allAnagram(input):
     
    # empty dictionary which holds subsets
    # of all anagrams together
    dict = {}
 
    # traverse list of strings
    for strVal in input:
         
        # sorted(iterable) method accepts any
        # iterable and returns list of items
        # in ascending order
        key = ''.join(sorted(strVal))
         
        # now check if key exist in dictionary
        # or not. If yes then simply append the
        # strVal into the list of it's corresponding
        # key. If not then map empty list onto
        # key and then start appending values
        if key in dict.keys():
            dict[key].append(strVal)
        else:
            dict[key] = []
            dict[key].append(strVal)
 
    # traverse dictionary and concatenate values
    # of keys together
    output = ""
    for key,value in dict.items():
        output = output + ' '.join(value) + ' '
 
    return output
 
# Driver function
if __name__ == "__main__":
    input=['cat', 'dog', 'tac', 'god', 'act']
    print (allAnagram(input))


输出:

'cat tac act dog god'