我正在尝试比较一本字典的所有元素,以确保它们在一秒钟内具有正确的数字。我是Python新手,所以我知道我可能遗漏了一些简单的东西,而且我已经在这个问题上工作了几个小时,所以我的代码可能非常丑陋和错误。这是我迄今为止所拥有的示例。
try:
for key in dict_one:
if dict_two.get(key, 0) == dict_one[key]:
del dict_one[key]
if dict_one[key] < 0 :
return False
else:
return True
except KeyError:
pass
我也尝试过 all(dict_two.get(key,0))
但没有成功。最终输出应检查您是否可以使用 dict_one
中的单词拼写 dict_two
中的单词 True
如果可以的话,False
如果你不能,那么如果 dict_two
单词需要三个 E,那么 dict_one
应该有 3 个 E,否则返回 false。或者如果您拼写 bunny ex dict_one = {b: 1, u: 1, n:1, y:1, x: 3}
和 dict_two ={b: 1, u: 1. n: 2, y:1}
False
因为单词中需要 2 个 N,而 dict_one
只有一个。
当我输入一个单词时,我可以让 dict_two
正确填充,并且 dict_one
正确地提取随机数和这些数字的数量。我可以让它们正确比较每个字母中包含的字母,但我无法让它针对所需字母的数量产生正确的答案 True 或 False 。我觉得我已经接近答案了,但当我尝试新事物并挖得更深时,情况就会变得更糟。
谢谢!
最佳答案
因此,您想要检查 dict2
中的每个字母在 dict1
中的映射至少与 dict2
中映射的字母一样大?这很容易完成。
def can_spell(dict1, dict2):
try:
return all(dict1[k] >= v for k, v in dict2.items())
except KeyError:
return False
这会获取 dict2 中的每个(键,值)对,然后将 v 与 dict1 中该键的映射进行比较。当且仅当该生成器理解中的每个表达式都为 true 时,all
返回 True
。
关于Python 3.5 字典比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097366/