开发者

setDefault for Nested dictionary in python

开发者 https://www.devze.com 2023-01-09 03:15 出处:网络
How do I use setdefault in开发者_运维知识库 python for nested dictionary structures. eg.. self.table[field] = 0

How do I use setdefault in开发者_运维知识库 python for nested dictionary structures. eg..

self.table[field] = 0
self.table[date] = []
self.table[value] = {}

I would like to setdefault for these.


Assuming self.table is a dict, you could use

self.table.setdefault(field,0)

The rest are all similar. Note that if self.table already has a key field, then the value associated with that key is returned. Only if there is no key field is self.table[field] set to 0.

Edit: Perhaps this is closer to what you want:

import collections
class Foo(object):
    def __init__(self):
        self.CompleteAnalysis=collections.defaultdict(
            lambda: collections.defaultdict(list))

    def getFilledFields(self,sentence):
        field, field_value, field_date = sentence.split('|')
        field_value = field_value.strip('\n')
        field_date = field_date.strip('\n')
        self.CompleteAnalysis[field]['date'].append(field_date)
        self.CompleteAnalysis[field]['value'].append(field_value) 

foo=Foo()
foo.getFilledFields('A|1|2000-1-1')
foo.getFilledFields('A|2|2000-1-2')
print(foo.CompleteAnalysis['A']['date'])
# ['2000-1-1', '2000-1-2']

print(foo.CompleteAnalysis['A']['value'])
# ['1', '2']

Instead of keeping track of the count, perhaps just take the length of the list:

print(len(foo.CompleteAnalysis['A']['value']))
# 2
0

精彩评论

暂无评论...
验证码 换一张
取 消