我有一个名为“值”的函数,它进行大量计算......
如果标识符的数据集未更改,则函数的结果始终相同。
一旦针对某个标识符更改了数据集,我想清除缓存,然后让函数再次计算它。
您可以通过查看此代码更好地了解我:
from functools import cached_property
class Test:
identifiers = {}
dataset = an empty object of dataset type
def __init__(self, identifier, ...)
self.identifier = identifier
...
Test.identifiers[identifier] = self
...
@cached_property
def value(self):
result = None
# heavy calculate based on dataset
return result
@classmethod
def get(cls, identifier):
if identifier in cls.identifiers:
return cls.identifiers[identifier]
else:
return cls(identifier, ...)
@classmethod
def update(cls, dataset):
for block in dataset:
# assume there is block['identifier'] in each block
# here i …
Run Code Online (Sandbox Code Playgroud) 我正在尝试转换此列表:
data = [{'A': 123}, {'B': 456}, {'C': 789}]
Run Code Online (Sandbox Code Playgroud)
到这本词典:
{'A': 123, 'B': 456, 'C': 789}
Run Code Online (Sandbox Code Playgroud)
通过使用字典理解:
{key: value for key, value in dictionary.items() for dictionary in data}
Run Code Online (Sandbox Code Playgroud)
例外:
NameError: name 'dictionary' is not defined
Run Code Online (Sandbox Code Playgroud)