硬币改变 - 蟒蛇

时间:2018-03-07 04:20:22

标签: python-3.x dictionary coin-change

  1. 我的面额" 5"没有出现,你如何容易地扭转字典。我不想要额外的5行code.lol
  2. 你们可以帮帮我吗?
  3. 到目前为止,代码正在运作。

  4. 这是我带有测试用例的代码

    def change(target, coins):
        result = dict()
        i= len(coins) -1
        while i> 0:
            coin = coins[i]
            numOfThisCoin= target // coin
            result[coin] = numOfThisCoin
            target -= coin * numOfThisCoin
            i-= 1
        return result
    
    print(change(185, (5, 10, 25, 100, 200)))
    
  5. 我正在获得输出

        {200: 0, 100: 1, 25: 3, 10: 1}
    

    但希望它像

        {5: 0, 10: 1, 25: 3, 100: 1, 200: 0}
    

2 个答案:

答案 0 :(得分:0)

以下是您问题的更正代码:

from collections import OrderedDict

def change(target, coins):
    result = dict()
    i= len(coins) -1
    while i>= 0:
        coin = coins[i]
        numOfThisCoin= target // coin
        result[coin] = numOfThisCoin
        target -= coin * numOfThisCoin
        i-= 1
    res = OrderedDict(sorted(result.items()))
    return res

print(change(185, (5, 10, 25, 100, 200)))

如果你(你不仅可以获得25个硬币面额)

print(res[25])

输出

3

在这种情况下。 dict - 它不会保持元素的顺序。您必须使用OrderedDict按所需顺序对元素进行排序。有关详细信息,请访问以下链接:

  

http://docs.python.org/library/collections.html#collections.OrderedDict

答案 1 :(得分:0)

def change(target, coins):
    result = dict()
    i= len(coins) -1
    while i>= 0:
        coin = coins[i]
        numOfThisCoin= target // coin
        result[coin] = numOfThisCoin
        target -= coin * numOfThisCoin
        i-= 1
    return dict(sorted(result.items()))

print(change(185, (5, 10, 25, 100, 200)))