使用 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() 查找字典中的键的主要内容,如果未能解决你的问题,请参考以下文章

Counter

如何在嵌套字典中查找所有出现的键,同时跟踪外部字典键值?

python 18:字典的赋值

在字典中查找重复值并打印重复元素的键

如何使用 forloop.counter0 作为 Django 模板中的键

python 怎么取出counter的字典