擅长:python、mysql、java
<p>我用dict和<code>__missing__</code>函数实现了一个树。如果不存在,则添加节点</p>
<pre><code>import json
class CategoryNode(dict):
def __missing__(self,key):
self[key] = CategoryNode()
return self[key]
def add_item(self, item):
self[item['bigCtgr']][item['smaCtgr']][item['ssCtgr']][item['sCtgr']] = CategoryNode()
class CategoryPipeline(object):
ctgr = CategoryNode()
file = "test.json"
def process_item(self, item, spider):
CategoryPipeline.ctgr.add_item(item)
def json(self):
json.dump(CategoryPipeline.ctgr,open(CategoryPipeline.file,'w'), ensure_ascii=False, encoding='utf-8')
</code></pre>
<p>你可以这样使用它</p>
<pre><code>cp = CategoryPipeline()
item = {}
item['bigCtgr'] = 'item'
item['smaCtgr'] = 'food'
item['ssCtgr'] = 'apple'
item['sCtgr'] = 'red'
item2 = {}
item2['bigCtgr'] = 'item'
item2['smaCtgr'] = 'food'
item2['ssCtgr'] = 'Orange'
item2['sCtgr'] = 'orange'
cp.process_item(item,"Yo")
cp.process_item(item2,"Yo")
cp.json()
</code></pre>