Python 比较字典
级别:初学者
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