python2.7中yield使用案例demo

# -*- 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记录==============

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值