Python 更改字典中除一个键以外的值

Python 更改字典中除一个键以外的值,python,dictionary,key,Python,Dictionary,Key,我试图解决这个小问题已经快一个小时了 Python是麻省理工学院的学生,喜欢水果。他有不同的类型 每天从他家到他家的水果(用大写字母表示) 去麻省理工学院校园吃饭的路上。但他吃水果的方式是独一无二的。 每吃一个水果后(除了他刚吃的最后一个) 到达校园后),他休息了30秒,买了1个 除了他刚吃过的那一种以外的每一种水果眼镜蛇,他的结束语 朋友,有一天,我决定检查一下Python。他一直跟着他 他在去麻省理工学院校园的路上记下了他在教室里吃的水果种类 字符串模式的形式(例如,AABBBBCA)。你能

我试图解决这个小问题已经快一个小时了

Python
是麻省理工学院的学生,喜欢水果。他有不同的类型 每天从他家到他家的水果(用大写字母表示) 去麻省理工学院校园吃饭的路上。但他吃水果的方式是独一无二的。 每吃一个水果后(除了他刚吃的最后一个) 到达校园后),他休息了30秒,买了1个 除了他刚吃过的那一种以外的每一种水果<代码>眼镜蛇,他的结束语 朋友,有一天,我决定检查一下
Python
。他一直跟着他 他在去麻省理工学院校园的路上记下了他在教室里吃的水果种类 字符串模式的形式(例如,
AABBBBCA
)。你能帮助《眼镜蛇》 确定不同类型水果的最大数量 当他到达校园时,Python就出现了这种情况

编写一个函数
nfruits
,该函数包含两个参数:

  • 一本非空字典,包含水果类型及其数量,最初在他离家时使用
    Python
    (长度<10)

  • 如眼镜蛇所观察到的,
    Python
    在旅途中吃的一连串水果

此函数应返回不同类型中的最大数量 当他达到目标时,
Python
提供的水果类型 校园

例如,如果初始数量是
{'A':1,'B':2,'C':3}
字符串模式为
AC
,然后:

  • A
    已使用,更新的值为
    {'A':0,'B':2,'C':3}
  • Python
    购买
    B
    C
    ,更新的值是
    {'A':0,'B':3,'C':4}
  • 已使用´C',更新的值为{A':0,'B':3,'C':3}
  • 现在
    Python
    已经到达校园。因此函数将返回3 是三种水果的最大数量

    这是MOOC的一个可选练习,因此没有评分:我解决了更难的问题(更难),但我无法解决它

    我的尝试:

    def nfruits(dictionary, string):
        i = 0
        string = sorted(string)
    
        for char in string:
            dictionary[char] -= 1
            # print dictionary
            i += 1
            for char in string[i:]:
                dictionary[char] += 1
                # print dictionary
    
         return dictionary[max(dictionary, key = dictionary.get)]
    

    对于特定的键,将
    1
    添加到所有位置,然后减去
    2
    ,怎么样

    差不多

    def nfruits(dictionary, string):
        i = 0
        string = sorted(string)
    
        for idx, char in enumerate(string):
            # We should update other fruits on all steps except the
            # last one
            if idx < len(string) - 1:
                for key in dictionary:
                    dictionary[key] += 1
                dictionary[char] -= 2
            else:
                # for the last step - only decrement the fruit
                # Python ate
                dictionary[char] -= 1
            print dictionary
        return dictionary[max(dictionary, key = dictionary.get)]
    
    if __name__ == "__main__":
        dd = {'A': 1, 'B': 2, 'C': 3}
        print nfruits(dd, 'AC')
    

    对于特定的键,将
    1
    添加到所有位置,然后减去
    2
    ,怎么样

    差不多

    def nfruits(dictionary, string):
        i = 0
        string = sorted(string)
    
        for idx, char in enumerate(string):
            # We should update other fruits on all steps except the
            # last one
            if idx < len(string) - 1:
                for key in dictionary:
                    dictionary[key] += 1
                dictionary[char] -= 2
            else:
                # for the last step - only decrement the fruit
                # Python ate
                dictionary[char] -= 1
            print dictionary
        return dictionary[max(dictionary, key = dictionary.get)]
    
    if __name__ == "__main__":
        dd = {'A': 1, 'B': 2, 'C': 3}
        print nfruits(dd, 'AC')
    

    它似乎不起作用。对于某些条目是,但不是所有条目!它可以工作,但您需要确保不会减少任何<0的水果的计数:d={'a':1,'b':2,'c':3}和string='aabbca'是impossible@LorenzoFabbri它不适用于哪些条目?我更新了答案,有一个特殊情况-在最后一步中,我们不购买其他水果。@gkusner你说得对,但我假设输入只代表可能的情况。因为在两个朋友的背景下,一个不可能的情况意味着Cobra的录音是错误的,所以难怪我们会得到一个错误的最终结果。现在它工作得很好。非常感谢,现在我要明白了!它似乎不起作用。对于某些条目是,但不是所有条目!它可以工作,但您需要确保不会减少任何<0的水果的计数:d={'a':1,'b':2,'c':3}和string='aabbca'是impossible@LorenzoFabbri它不适用于哪些条目?我更新了答案,有一个特殊情况-在最后一步中,我们不购买其他水果。@gkusner你说得对,但我假设输入只代表可能的情况。因为在两个朋友的背景下,一个不可能的情况意味着Cobra的录音是错误的,所以难怪我们会得到一个错误的最终结果。现在它工作得很好。非常感谢,现在我要明白了!