需要用它们的值来计算的2个词典

时间:2014-09-23 09:47:38

标签: python python-2.7 dictionary key extract

在下面的代码中我有2个词典。第一个字典是我的程序给用户的字母列表(我正在制作拼字游戏)

所以我的程序为用户提供了一个包含七个随机字母的列表:

display_hand({'a':1, 'q':1, 'l':2, 'm':1, 'u':1, 'i':1})

字典中键的值表示您拥有该字母的次数,因此在此示例中,您的字母数为l。

但是现在我通过要求用户用这些字母创建一个单词来创建一个新词典:我使用以下代码执行此操作:

def histogram(s):
    d = dict()
    for c in s:
        if c not in d:
            d[c] = 1
        else:
            d[c] += 1
    return d


h = histogram(raw_input("what word do you make out of these letters?"))
print h

因此,如果我选择使该单词成为目标,那么该函数的结果将是:

{'a': 1, 'i': 1, 'm': 1} 

但我不知道如何从display_hand字典中提取这个字典。

因为display_hand字典现在应该在下面的两个词典之一中更改:

display_hand({'q':1, 'l':2, 'u':1})
display_hand({'a':0, 'q':1, 'l':2, 'm':0, 'u':1, 'i':0})

这是因为我使用了我的字母:A,I和M

如果有人可以帮我解决这个问题,那将是非常好的,无论如何已经非常感谢!

1 个答案:

答案 0 :(得分:0)

如果输入词是 aim

,这将输出为{'a':0, 'q':1, 'l':2, 'm':0, 'u':1, 'i':0}
import collections

d = {'a':1, 'q':1, 'l':2, 'm':1, 'u':1, 'i':1}

inp_list = list(raw_input())

user_h = collections.Counter(inp_list)

for key in user_h:
    if key in d:
        d[key] = d[key] - user_h[key]

print d

inp_list 是输入字符串中的字符列表, user_h 是输入字词的字典。然后,您可以遍历字典以获取所需的输出。您还可以检查密钥的值是否为负(应该防止)。

希望它有所帮助!