如何在Python中使用setdefault对嵌套字典结构进行操作。
例如...
我想为这些设置默认值。
self.table[field] = 0
self.table[date] = []
self.table[value] = {}
我想为这些设置默认值。
self.table[field] = 0
self.table[date] = []
self.table[value] = {}
假设self.table
是一个字典,您可以使用以下代码:
self.table.setdefault(field,0)
self.table
已经有一个键field
,那么与该键关联的值将被返回。只有当没有键field
时,self.table[field]
才设置为0。
编辑:也许这更接近您想要的内容: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']
不必跟踪计数,可以直接获取列表的长度:
print(len(foo.CompleteAnalysis['A']['value']))
# 2
self.getFilledFields(sentence)
后想要self.CompleteAnalysis
看起来像什么?我有个猜测,但不太确定。 - unutbu