我正在尝试比较一个字典的所有元素,以确保它们在正确数字的第二个字典中。我是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_two
dict_one
中的单词拼出True
中的单词,如果可以,False
如果你不能dict_two
拼写单词dict_one
单词需要三个Es然后dict_one = {b: 1, u: 1, n:1, y:1, x: 3}
应该有3个Es或返回false。或者如果你拼写兔子ex dict_two ={b: 1, u: 1. n: 2, y:1}
和False
dict_one
,则为两个N,因为你需要2个N而dict_two
只有一个。
当我输入一个单词并且dict_one
正确地拉出随机数和这些数字的数量时,我可以正确填充True
。而且我可以让他们对每个字母中包含的字母进行正确比较,我无法让它为False
或if(placeName().Remove(".' ").toLowerCase().contains(filter.Remove(".' ").toLowerCase()))
产生所需字母的正确答案。我觉得我接近一个答案,但是当我尝试新事物并深入挖掘我的洞时,只会让事情变得更糟。
谢谢!
答案 0 :(得分:2)
因此,您要查看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
中该键的映射进行比较。 all
如果生成器理解中的每个表达式都为真,则返回True
。