1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
def getdictvalue(d,code): result = [] if isinstance (d, dict ) : try : value = d[code] result.append(value) except Exception as e: pass for valuedd in d.values(): if isinstance (valuedd, dict ): yied_result = getdictvalue(valuedd,code) if len (yied_result) ! = 0 : result.append(getdictvalue(valuedd,code)) elif isinstance (valuedd,( list , tuple )): for item in d: valueitem = getdictvalue(valuedd,code) if valueitem ! = "None" and valueitem is not None and len (valueitem)! = 0 : if valueitem not in result: result.append(valueitem) elif isinstance (d, ( list , tuple )): for item in d: value = getdictvalue(item,code) if value ! = "None" and value is not None and len (value)! = 0 : if value not in result: result.append(value) return result |
由于返回时list,经过层层嵌套,list是复杂的,封装一个,增加一个list转换
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class listchangetype( object ): """对于查找后的list的数据的清洗""" def __init__( self ): self .arg = [] def make( self ,listone): for i in listone: if isinstance (i,( type , list )): for l in i: self .make(i) else : if i not in self .arg: self .arg.append(i) return self .arg |
这样就按顺序,读取了复杂的dict, 比之前的一篇文章的代码,更加完美。
出 处:https://www.cnblogs.com/leiziv5/p/11218811.html