Python 3.5字典比较

时间:2016-10-17 23:47:22

标签: python python-3.x dictionary

我正在尝试比较一个字典的所有元素,以确保它们在正确数字的第二个字典中。我是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。而且我可以让他们对每个字母中包含的字母进行正确比较,我无法让它为Falseif(placeName().Remove(".' ").toLowerCase().contains(filter.Remove(".' ").toLowerCase())) 产生所需字母的正确答案。我觉得我接近一个答案,但是当我尝试新事物并深入挖掘我的洞时,只会让事情变得更糟。

谢谢!

1 个答案:

答案 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中获取每个(键,值)对,然后将vdict1中该键的映射进行比较。 all如果生成器理解中的每个表达式都为真,则返回True