下午好。
如果我的问题看起来很蠢,或者已经发布过了(我搜索了一下,但好像没找到。如果我错了,请告诉我:我是新来的,可能不擅长搜索正确的问题) ,非常抱歉。
我想知道在Python中是否可以从字典中弹出(pop)一个通用项目。
该想法来自以下练习:编写一个函数,查找给定字典中值的总和。
显然有许多方法可以实现:对dictionary.values()
求和,为总和创建一个变量,并遍历字典并更新它等等。 但我试图使用递归来解决它,类似于:
def total_sum(dictionary):
if dictionary == {}:
return 0
return dictionary.pop() + total_sum(dictionary)
这个想法的问题在于我们事先不知道字典中哪一个键是“第一个”,因为它是无序的。如果这是一个列表,那么索引0就会被使用,它将会起作用。 既然我不关心弹出项的顺序,只要有一种删除任何项(“通用”项)的方法就足够了。你认为这样的解决方案可能存在吗?还是必须使用一些辅助变量,失去递归使用的整个优点,其优点是代码非常简洁和简单?
实际上,我找到了以下解决方案,尽管代码更复杂、更难以阅读:我认为,如果有一些内置的、简单而直接的解决方案来解决删除字典“第一个”项的特定问题,那么它仍然可能是有趣和有用的,尽管可以找到许多“人造”的替代解决方案。
def total_sum(dictionary):
if dictionary == {}:
return 0
return dictionary.pop(list(dictionary.keys())[0]) + total_sum(dictionary)
如果您想进行一些简单的测试,我将为您提供一个简单的示例字典来应用该函数。
ex_dict = {"milk":5, "eggs":2, "flour": 3}