【发布时间】:2023-03-08 09:20:02
【问题描述】:
我想创建一个字典来存储数学函数的名称、输入(单个数字)和结果。
结构应该类似于cache = {procedure: {input:result}}
i.e.
cache = {'factorial': {4:24, 10:3628800, 20:2432902008176640000},
'square': {2:4, 5:25, 10:100}
'sum': {3:6, 5:10, 7:14}}
def factorial(n):
#print "Running factorial"
result = 1
for i in range(2, n + 1):
result = result * i
return result
def square(n):
result = n ^ 2
return result
def sum(n):
result = n * 2
return result
我不希望预先创建缓存字典,因为它可能不知道它将为哪些数学函数存储值。然后我想创建一个名为 cached_execution 的函数,该函数将首先检查缓存是否已为输入调用该函数,如果是,则返回存储为 input:result 对的值的内容。
如果不是,则计算操作,将其存储在缓存中并返回值。如果该函数存在于缓存中,则应在其下创建另一个键/值对。如果没有,则为函数名称创建一个新条目,并将输入/结果的键/值存储在其下。
cached_execution 的结构很简单,但我不知道如何附加到字典。似乎 append 不是字典结构允许的方法。我尝试了各种方法都没有成功。
感谢您的帮助。
【问题讨论】:
-
旁注:
n^2不会给你平方,而是 n XOR 2。你想要n**2。 -
你试过什么?您可以编辑添加代码并指出问题所在吗?
-
"...我不知道如何追加到字典。似乎追加不是字典结构允许的方法。"您不附加到字典,而是设置
key:value对。如果你有字典d并且想要设置4:24对,你可以使用d[4] = 24。
标签: python dynamic dictionary append key