python - 打印输入字谜中字谜的最大出现次数和字谜本身

标签 python anagram

a = ['ab', 'absa', 'sbaa', 'basa', 'ba']
res = []
s = 0
for i in range(len(a)):
    b=a[i]
    c = ''.join(sorted(b))
    res.append(c)
res.sort(reverse=False)
wordfreq = [res.count(p) for p in res]
d = dict(zip(res, wordfreq))
all_values = d.values()  #all_values is a list
max_value = max(all_values)
print(max_value)
max_key = max(d, key=d.get)
print(max_key)

在给定的问题中,用户输入各种变位词,输出应该是该词的最大频率并打印这些变位词。 如果你能帮我从输入中打印出那些字谜,那将非常有帮助。

输出:

3 aabs       

预期输出:

3
absa sbaa basa

最佳答案

您可以创建一个单词字典 v/s 变位词列表

然后打印出字谜列表中元素个数最多的单词

from collections import defaultdict
words = ['ab','absa','sbaa','basa','ba']
wordToAnagram= defaultdict(list) 
# word vs list anagram 
# loop below will create {aabs:  ['absa', 'sbaa', 'basa']}
for word in words:
    s = "".join(sorted(word))
    wordToAnagram[s].append(word)


word, anagrams = max(wordToAnagram.items(), key=lambda x: len(x[1]))
print(" ".join(anagrams))

输出:

3
absa sbaa basa

详情

  1. wordToAnagrams

遍历单词后 wordToAnagram(dictionary) 看起来像这样

{
"ab" : ["ab", "ba"]
"aabs":  ["absa",  "sbaa", "base"]
}
  1. dictionary.items()

wordToAnagram.items() 返回字典键值的元组对

在哪里,

key: 是我们排序后的字符串"ab" or "aabs",

值:是变位词列表,例如对于 key = "ab",值等于["ab", "ba"]

dict_items([('ab', ['ab', 'ba']), ('aabs', ['absa', 'sbaa', 'base'])])
  1. max function using 'key' and lambda expression

max(wordToAnagram.items(), key=lambda x: len(x[1]))

通过比较字谜列表 (len(x[1])) 的长度,从可迭代的 wordToAnagram.items() 中找到最大值

关于python - 打印输入字谜中字谜的最大出现次数和字谜本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62234078/

相关文章:

python - 让 Spyder 为整个界面使用深色主题

python - 创建一个 python 集合/唯一列表

python - 如何让我的代码找到整个列表中最大的字谜组?

python - 为什么条件 "else"在我的 python 代码中不起作用

用于本地语言的 python 词干词

python - 无法安装 pip centos 6.7

Python setuptools 将脚本安装到路径

java - 我没有发现我的代码检查字符串是否有错误

对字谜词进行分组的算法

scala - 字谜递归Scala