【问题标题】:Adding key and value to a dictionary within a function in python在python中的函数内向字典添加键和值
【发布时间】:2018-09-23 13:07:41
【问题描述】:

我目前正在尝试通过使用具有三个变量的函数将新键和值添加到空字典中。

下面是我有的,但是不行……

def add_fruit(inventory, fruit, quantity=0):
    new_inventory = {}
    for key in inventory: 
        new_inventory[fruit] = quantity
    return new_inventory

我必须添加或更改什么才能使此功能正常工作? 例如,如果我想添加 10 个草莓,我会说 new_inventory["strawberries"] = 10,但在函数中我无法将其添加到字典中。

我将不胜感激一些帮助或建议!

提前致谢

【问题讨论】:

  • 1.缩进是否正确? return 应该在函数内部。 2.“未能将其添加到字典中”是什么意思?你怎么知道的?您是如何以及在哪里检查的?
  • 真的需要新建字典来添加键值对吗?
  • @DeepSpace 我更正了返回到函数内部。我尝试打印(add_fruit(new_dictionary, "strawberries", 10) 但该函数只返回 {}。
  • @DominiqueM 好吧,如果你传入一个空字典作为inventory 参数,那么for 循环将永远不会执行,因此将返回一个空字典。
  • @DominiqueM 好吧,比你将strawberries 作为fruit 参数和10 传递给quantityinventory 的用途是什么?为什么是循环?

标签: python function dictionary


【解决方案1】:

您的问题似乎是您多次添加新键 (for key in inventory) 并且没有添加原始字典中的其他键?

我建议您解压缩原始字典并添加一个新键,如下所示:

def add_fruit(inventory, fruit, quantity=0):
    return {**inventory, fruit: quantity}

更多关于 python 解包:https://www.python.org/dev/peps/pep-0448/

【讨论】:

  • 谢谢,您的回答似乎解决了我的问题(**库存部分)!现在我应该弄清楚**到底是什么意思了:)
  • @DominiqueM 我已在我的答案中添加了 PEP 链接!
【解决方案2】:

我就是这样解决的。

def add_fruit(inventory, fruit, quantity=0):
    inventory[fruit] = quantity
    return inventory
def add_to_fruit(inventory, add_more):
    for key,value in inventory.items():
        if len(inventory) == 1:
            inventory[key] += add_more
        return inventory
            
# make these tests work...
new_inventory = {}
add_fruit(new_inventory, 'strawberries', 10)
#  test that 'strawberries' in new_inventory
print('strawberries' in new_inventory)
#  test that new_inventory['strawberries'] is 10
print(new_inventory)
add_to_fruit(new_inventory, 25)
#  test that new_inventory['strawberries'] is now 35)
print(new_inventory)

【讨论】:

    【解决方案3】:

    有几种方法可以通过函数更新字典:

    dict.__setitem__

    只需通过setitem 或其语法糖[] 设置一个项目:

    def add_fruit(inventory, fruit, quantity=0):
        inventory[fruit] = quantity
        return inventory
    

    dict.update

    创建一个字典并用这个更新您现有的字典:

    def add_fruit(inventory, fruit, quantity=0):
        inventory[fruit] = quantity
        return inventory
    

    创建新词典

    解压现有字典,同时添加一个新项目as described@ArtyonNeustroev。

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 2015-08-24
      • 1970-01-01
      • 2018-05-27
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多