# -*- 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記錄==============