【问题标题】:2 dictionaries that need to calculate with their value's2 需要用它们的值计算的字典
【发布时间】:2014-09-23 09:47:38
【问题描述】:

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

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

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

字典中键的值表示你有多少次这个字母,所以在这个例子中你有 2 倍的字母 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

因此,如果我选择 make 单词瞄准,该函数的结果将是:

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

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

因为 display_hand 字典现在应该在以下 2 个字典之一中更改:

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

如果有人能帮我解决这个问题,那就太好了,无论如何已经非常感谢了!

【问题讨论】:

    标签: python python-2.7 dictionary key extract


    【解决方案1】:

    如果输入单词是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 是输入单词的字典。然后,您可以遍历字典以获得所需的输出。您还可以检查某个键的值是否为负数(应该避免这种情况)。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多