# -*- coding:utf-8 -*-
import json
import time
info1 = [['2018-06-24-00', '24'], ['2018-06-24-01', '28']]
info2 = [['2018-06-24', '45','79']]
def jsonToMap(dict):
jsonstr = json.dumps(dict)
return json.loads(jsonstr)
def packMap(dict,index,dateArray,data):
dictTemp={}
if(index+1!=len(dateArray)):
key=dateArray[index]
value=dateArray[index+1]
if(dict.has_key(key)!=True):
dict[key]=packMap(dictTemp,index+1,dateArray,data).next()
elif(dict.has_key(key)):
if(jsonToMap(dict[key]).has_key(value) ):
dictTemp2={}
dictTemp2=jsonToMap(dict[key])
dict[key]=packMap(dictTemp2,index+1,dateArray,data).next()
else:
dictTemp3={}
dictTemp3=jsonToMap(dict[key])
dict[key]=packMap(dictTemp3,index+1,dateArray,data).next()
else:
dict[dateArray[index]]=data
yield dict
#return dict
linedata1 = {}
for data in info1:
for index in packMap(linedata1, 0, str(data[0]).split("-"), data[1]):
111
print linedata1
linedata2 = {}
for data in info2:
for index in packMap(linedata2, 0, str(data[0]).split("-"), data[1:]):
111
print linedata2
#dict为横向,dict2为基准点字典,即dict2为核对依据,返回的是核对后的dict的数据
def compareMap(dict1,dict2): #返回元组
tempDict={}#dict1的数据规范后
tempDict2={}#dict2的数据规范后
for key in dict1.keys():
if(dict2.has_key(key)):
if(str(dict1[key]).find("{")!=-1):
dictValue=jsonToMap(dict1[key])
for key2 in dictValue.keys():
if(jsonToMap(dict2[key]).has_key(key2 ) ):
tuptemp=compareMap(dictValue,jsonToMap(dict2[key])).next()
tempDict[key]=tuptemp[0]
tempDict2[key]=tuptemp[1]
else:
if(dict2.has_key(key)): #此处的key为dict1的最后一层key了
pointValue=[]
for point in jsonToMap(dict2[key]).keys():
pointValue.append(dict1[key][int(point)])
tempDict[key]=pointValue
tempDict2[key]=jsonToMap(dict2[key]).values()
yield tempDict,tempDict2
start2=time.time()
for index in compareMap(linedata2,linedata1):
comparedict=index
end=time.time()
print end-start2
print comparedict
在搜索python递归优化时搜索到python yield,为学习yield写此demo,此时对yield的理解还太浅,尚处于可以用的阶段,若深入理解后,再来补充
========2018-06-24记录==============