有谁知道Python中是否存在用于无限嵌套字典的标准类?
我发现自己在重复这种模式:
d = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
d['abc']['def']['xyz'] += 1
如果要添加“另一个层”(例如d['abc']['def']['xyz']['wrt']
),则必须定义defaultdicts的另一个嵌套。
为了概括这种模式,我编写了一个简单的类,该类将重写__getitem__
以自动创建下一个嵌套字典。
例如
d = InfiniteDict(('count',0),('total',0))
d['abc']['def']['xyz'].count += 0.24
d['abc']['def']['xyz'].total += 1
d['abc']['def']['xyz']['wrt'].count += 0.143
d['abc']['def']['xyz']['wrt'].total += 1
但是,有人知道这种想法的先前存在吗?我已经尝试了谷歌搜索,但是我不确定这叫什么。
您可以从中defaultdict
获得所需的行为:
class InfiniteDict(defaultdict):
def __init__(self):
defaultdict.__init__(self, self.__class__)
class Counters(InfiniteDict):
def __init__(self):
InfiniteDict.__init__(self)
self.count = 0
self.total = 0
def show(self):
print "%i out of %i" % (self.count, self.total)
该类的用法如下所示:
>>> d = Counters()
>>> d[1][2][3].total = 5
>>> d[1][2][3].show()
0 out of 5
>>> d[5].show()
0 out of 0
问题内容: 有没有办法使defaultdict也成为defaultdict的默认值?(即无限级递归defaultdict?) 我希望能够做到: 因此,我可以做到x = defaultdict(defaultdict),但这仅是第二层: 有一些食谱可以做到这一点。但是可以仅使用常规的defaultdict参数来完成吗? 请注意,这是在问如何执行无限级递归defaultdict,因此它与Python不
如果简化,将得到以下JSON实现: 数据(实体)- 我假设我将首先解密数据对象,从中获取一个类型,然后从该类型使用字符串“Data”中的必要类型进行解密,但我的想法失败了。有没有办法解决这个问题? 我创造了这种类型的正常实体 在“数据”字段中,我放置一个对象,该对象也由 当试图用 我犯了个错误 com.fasterxml.jackson.databind.exc.不匹配的输入异常:无法构造实例(尽
问题内容: 例如: 要么 这些名称或破折号有问题吗? 问题答案: 老实说,这取决于个人开发人员和他们自己的感受。就像您建议的那样,有两种同样好的构造CSS类的方法: 它们可以达到相同的目的,但是当您开始广泛思考时,您会发现这些样式之间的差距有多大。 分离班使他们可以重复使用: 该干的惯例是从不重复自己。通过分离or类,我们可以 重用 相同的类: 在第二种方法中-使用分隔符,代码将是: 在像这样的简
我陷入了需要检查嵌套JSON对象中是否存在键的情况。通过嵌套JSON对象,我在父JSON对象中有一个JSON对象作为其键之一的值。所以我需要检查这个键是否存在于整个JSON对象中。我将以下数据作为对象获取。我知道我可以解析这个对象以获取JSON对象。 我使用了方法来检查主JSON对象中是否存在密钥,它可以正常工作。但是要检查任何内部JSON对象,比如“info”,我需要再次将解析为JSON对象,然
问题内容: 我正在编写一个Java程序,用于从POP3电子邮件中下载附件。最初,我通过获取MimePart的内容类型得到验证的输入流来执行此操作。然后,我可以简单地通过FileOutputStream将输入流写入本地文件。 但是,我遇到的一件事是,当我收到一封带有附件的电子邮件作为唯一内容并访问它之后,该邮件(消息类型)仅由一个部分组成,即文本/普通类型。其内容包括大量随机外观的字符。 通过互联网
问题内容: 我陷入一种情况,我需要检查嵌套JSON对象中是否存在密钥。通过嵌套的JSON对象,我在父JSON对象中具有一个JSON对象作为其键之一的值。所以我需要检查此密钥是否存在于整个JSON对象中。我将以下数据作为对象。我知道我可以解析此对象以获得JSON对象。 我已经使用方法来检查主要JSON对象中密钥的存在,并且它可以工作。但是对于检查任何内部JSON对象(例如“ info”),我需要再次