使用 Counter() 查找字典中的键
Posted
技术标签:
【中文标题】使用 Counter() 查找字典中的键【英文标题】:looking for a key in a dictionary using Counter() for anagram 【发布时间】:2021-08-22 21:26:09 【问题描述】:我正在尝试在虚构字典中查找具有相似字母(字谜)的键,但我有这个不完整的代码:
from collections import Counter
diction = 'crazy':'dd', 'abd':'ddd','cat':'bad'
word = input('what is the word?')
new=[]
for i in dic:
if(Counter(word) == Counter(....):
new.append(...)
else:
continue
print(f'word and new are anagrams')
我不知道如何检查键以及它们是否与给定的输入匹配。感谢您的帮助
【问题讨论】:
你如何定义“相似”?要检查字谜,如果单词长度相同,请对字母进行排序并检查是否相等。 【参考方案1】:我实际上认为Counter
在这里是一个很好的解决方案,可能比排序更好,因为它是 O(n)。例如,Counter("arc") == Counter("car")
返回True
。所以你在正确的轨道上。
您的代码中有拼写错误(dic
应该是 diction
)。你的 for 循环已经在遍历键,所以你很接近:
from collections import Counter
diction = 'crazy':'dd', 'abd':'ddd','cat':'bad'
word = input('what is the word?')
new=[]
for i in diction:
if(Counter(word) == Counter(i)):
new.append(i)
else:
continue
print(f'word and new are anagrams')
如果我输入“tac”,它将打印:
tac 和 ['cat'] 是字谜
【讨论】:
这是我在 *** 上的第一个 Q :) 我正在尝试使用 Json 格式的英语词典,我不想通过定义,所以只有键是我的目标。这样我会将输入与字典条目而不是定义进行匹配。谢谢您的帮助 @user80322 就第一个问题而言,您做得很好,所以我给了您一个赞!欢迎使用 ***!以上是关于使用 Counter() 查找字典中的键的主要内容,如果未能解决你的问题,请参考以下文章