Python 比较字典

1 投票
5 回答
982 浏览
提问于 2025-04-16 03:49

级别:初学者

word= 'even' 
dict2 = {'i': 1, 'n': 1, 'e': 1, 'l': 2, 'v': 2} 

我想知道一个单词是否完全由字典 dict2 中的字母组成。我的思路是:

第一步:把单词转换成字典(dict1)

第二步:

for k in dict1.keys(): 
        if k in dict2: 
               if dict1[k] != dict2[k]: 
                   return False 
               return True 

通过添加一个打印语句,我发现这个过程结束得太早了。比如,一旦第一个 IF 条件满足,循环就会退出,这样我就得不到正确的答案。我觉得这个问题很简单,但在谷歌和 Python 文档中没有找到好的提示,所以我在这里试试。

谢谢你,Baba

更新

每个字母在单词中出现的次数必须小于或等于它在 dict2 中出现的次数。这样我就能确保这个单词完全由 dict2 中的元素组成。

for k in word.keys(): # word has ben converted to key already
    if k not in hand:
        return False
    elif k in hand:
      if word[k] > hand[k]:  
          return False
return True

5 个回答

1

除非你有其他用途,不然就别费劲去构建 dict1 了。直接这样做就行:

for c in word:
    if c not in dict2:
        return False
return True

当然,你也可以用 set 来代替 dict 来存放字母。

4

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会做出反应。

比如说,如果你在玩一个游戏,只有当你的分数达到一定的数值时,你才能解锁下一个关卡。这种情况在编程中也很常见,我们称之为“条件语句”。

条件语句就像是一个开关,只有在条件成立时,开关才会打开,程序才会继续执行后面的代码。如果条件不成立,程序就会跳过这些代码,继续执行其他部分。

希望这个解释能帮助你更好地理解条件语句的概念!

>>> word= 'even'
>>> dict2 = {'i': 1, 'n': 1, 'e': 1, 'l': 2, 'v': 2}
>>> set(word).issubset(set(dict2.keys()))
True
0

你只想在所有检查都完成后返回true,所以把它放在循环之后。下面是对你代码的直接修改:

for k in dict1.keys(): 
    if k in dict2: 
        if dict1[k] != dict2[k]: 
            return False 
return True 

撰写回答