当前位置 博文首页 > 浅谈Python列表嵌套字典转化的问题

    浅谈Python列表嵌套字典转化的问题

    作者:spigirl 时间:2021-05-02 17:42

    在看视频教程的时候提到了[{'a' : 97}, {'b' : 98}, {'c' : 99}, {'d' : 100}, {'e' : 101}, ...........]形式的列表嵌套形式,

    要求是将上述列表转换为{'a' : 97,'b' : 98,'c' : 99 ,'d' : 100,'e' : 101,。。。。。}的字典形式

    首先上述的a--->97, b--->98,。。。。。意思是key为a到z的英文小写字母,value值为对应的ascii码,

    那么一开始可以结合range()方法定义变量如下:

    那么alpha = ['a','b','c',........'z']

    转换为[{'a' : 97}, {'b' : 98}, {'c' : 99}, {'d' : 100}, {'e' : 101}, ...........]的代码可以结合map()函数来生成

    函数运行结果:

    其实就是将[{'a' : 97}, {'b' : 98}, {'c' : 99}, {'d' : 100}, {'e' : 101}, ...........]遍历打印出来的结果。

    然后就是要将上述的形式转换为

    {'a' : 97,'b' : 98,'c' : 99 ,'d' : 100,'e' : 101,。。。。。}

    本人采用的是Python字典中的items()函数方法:

    i.items()的作用:使 { x : y } ---------》[ (x , y ) ]

    结果就是:

    {'a' : 97}, {'b' : 98}, {'c' : 99}, {'d' : 100}, {'e' : 101}, ...........---------》 [('a' , 97)],[('b' : 98)],........

    也就是 一个i.items() 代表一个[ ( x , y) ] 字典列表

    双重循环遍历输出i.items()结果:

    程序的目的是获得对应的key,value值:

    然后将上述的数据放到新定义的空字典中:

    补充:python判断字典是嵌套和嵌套字典列表

    如下所示:

    #coding: utf-8
    import types
    #获取字典中的objkey对应的值,适用于字典嵌套
    #dict:字典
    #objkey:目标key
    #default:找不到时返回的默认值
    def dict_get(dict, objkey, default):
     tmp = dict
     for k,v in tmp.items():
      if k == objkey:
       return v
      else:
       if type(v) is types.DictType:
        ret = dict_get(v, objkey, default)
        if ret is not default:
         return ret
     return default
    #如
    dicttest={"result":{"code":"110002","msg":"设备设备序列号或验证码错误"}}
    ret=dict_get(dicttest, 'msg', None)
    print(ret)
    

    字典的列表

     "network": {
      "tls": [],
      "udp": [
       {
        "src": "192.168.56.102",
        "dst": "114.114.114.114",
        "offset": 2372,
        "time": 9.506472110748291,
        "dport": 53,
        "sport": 51394
       },
       {
        "src": "192.168.56.102",
        "dst": "114.114.114.114",
        "offset": 2611,
        "time": 2.232347011566162,
        "dport": 53,
        "sport": 53604
       }]
       }
    for k,v in mydict.items():
       if type(v) is types.ListType:
        for val in v:
         if type(val) is types.DictType:
          for key,value in val.items():
           print("%s:%s"%(key,value))
       else:
        print("%s:%s"%(k,v))

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持站长博客。如有错误或未考虑完全的地方,望不吝赐教。

    js
    下一篇:没有了