淺談Python列表嵌套字典轉化的問題

在看視頻教程的時候提到瞭[{‘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))

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀:

    None Found