zoukankan      html  css  js  c++  java
  • 关于压栈的一个案例

    msg = '''
    有⼀个数据结构如下所⽰,请编写⼀个函数从该结构数据中返回由指定的字段和对应的值组成的字
    典。如果指定字段不存在,则跳过该字段。(10分)
    data:{"time":"2016-08-05T13:13:05",
    "some_id":"ID1234",
    "grp1":{ "fld1":1,
    "fld2":2},
    "xxx2":{ "fld3":0,
    "fld5":0.4},
    "fld6":11,
    "fld7":7,
    "fld46":8}
    fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19
    def select(data,fields):
    # TODO:implementation
    return result

    def select(data,fields):
    fields_lst = fields.split(‘|’)
    for key in data:
    if type(data[key]) == dict:
    pass
    return result
    '''

    print(msg)

    mydict ={"data":{"time":"2016-08-05T13:13:05",
    "some_id":"ID1234",
    "grp1":{ "fld1":1,
    "fld2":2},
    "xxx2":{ "fld3":0,
    "fld5":0.4},
    "fld6":11,
    "fld7":7,
    "fld46":8}}


    fields = 'fld2|fld3|fld7|fld19'

    def wenwa(datadict,fields):

    fieldslist = fields.split('|')

    answerdict = {}

    l = [mydict]

    while l:

    data = l.pop()

    for wenwa in data:

    if type(data[wenwa])==dict: #如果对应字典值的数据类型还是字典:则扔回列表中接着拆

    l.append(data[wenwa])

    else:

    if wenwa in fieldslist:

    answerdict[wenwa]=data[wenwa]



    print("这里是%s"%answerdict)


    wenwa(mydict,fields)


    #和晓强分享这道题的目的是:

    # 首先,while循环的条件居然破天荒的是一个列表!鬼知道,列表怎么还能当作循环条件

    #其二,代码使用了压栈的思想,这对神圣丁来说是第一次!

    #其三,for循环中,第55行-63行灵活的用单一变量,再现了字典中的两种数据类型,键和值,这是最引人注目的!

    #要是换做神圣丁,一定会十分笨拙的写为 for key in data.keys() ,for value in data.values()

    #最值得大书特书的是l = list(mydict)的使用,整个字典被当作列表,不断被弹出pop().对于弹出的部分,进行类型判别,各归其主

    #单一的值,根据对应的键加入resultlist(当然这些值的前提是,fieldslist里请求的),对于那些嵌套的数据类型,则会被重新丢进列表l[]进行判断

    #整个过程就像是脱粒机在工作

  • 相关阅读:
    归并排序
    快速排序
    UNION与UNION ALL的区别
    聚集索引和非聚集索引
    设计模式之抽象工厂模式
    list中map 的value值时间排序
    webmvc 拦截器 允许跨域 跨域问题 sessionid不一样
    redis 主从复制 和集群
    maven打包
    bcprov-jdk15on包用于创建CSR(证书请求)
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/7800930.html
Copyright © 2011-2022 走看看