print dictionary key减去列表变量

时间:2014-09-27 01:26:32

标签: list python-2.7 dictionary key key-value

所以我试图让游戏拼字游戏,但我有一点问题,我会尽力解释它:

我写了一个函数,生成一个包含7个键的字典(键是你在拼字游戏中得到的字母,键的值表示我有多少次在那个字母中输入我的手)

def deal_hand (7)

生成代码:

{'a': 1, 'b': 2, 'k': 1, 'o': 1, 'p': 1, 'r': 1}

这意味着我们有以下字母:a,b,b,k,o,p,r(我们有2次B,因为该键的值是2。

但是现在我想创建一个名为update_hand的第二个函数,这个函数应该取出用户用word_list创建的单词(在这个例子中类似于单词' bob')并且应该返回一个以下2个词典

{'a': 1, 'b': 0, 'k': 1, 'o': 0, 'p': 1, 'r': 1}


{'a': 1, 'k': 1, 'p': 1, 'r': 1}

我的程序应该返回其中一个程序,因为用户使用了字母:B,O和B.所以没有B和O.

我现在已经尝试了很多来解决这个问题,我想出了以下功能:

def update_hand(word, hand):
    newd = {}
    for x in word:
        if x in newd:
           newd[x]+=1
    else:
       newd[x] = 1
    hand[x]-=1

    return newd

在此代码中,函数中单词和hand的值为:

test_word = raw_input("Enter the word you want to make out of these letters.")

print update_hand(test_word,de_letters)

我认为我非常接近,但我只是得到我输入的最后一个字母的输出,请帮助我! :○

1 个答案:

答案 0 :(得分:0)

def update_hand(hand, name):
    delkeys = []
    for n in name:
        if not hand[n]:
            raise ValueError("Cannot remove %s from hand" %n)
        hand[n] -= 1
        if not hand[n]:
            delkeys.append(n)
    for k in delkeys:
        hand.pop(k)
    return hand