在看视频教程的时候提到了[{\’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))
以上为个人经验,希望能给大家一个参考,也希望大家多多支持自学编程网。如有错误或未考虑完全的地方,望不吝赐教。