在编程数据处理时,经常能碰到多级包含多类型的字典,例如下图:
客户要求取到所有根部key,value并写入DataFrame中,下面用我的方法来实现:
data = []
name_count=1
other_count=1
A=eval(response.text)
d=A["data"]
for k, v in d.items():
if isinstance(v, dict):
for sub_k, sub_v in v.items():
if isinstance(sub_v, list):
for sub_1_lst in sub_v:
if isinstance(sub_1_lst, dict):
for sub_1_k, sub_1_v in sub_1_lst.items():
if sub_1_k=="name" :
data.append(( sub_1_k+str(name_count), sub_1_v))
name_count+=1
elif sub_1_k=="riskPremSum":
data.append(( sub_1_k+str(other_count), sub_1_v))
other_count+=1
else:
data.append(( sub_1_k, sub_1_v))
elif isinstance(v, list):
for i, item in enumerate(v):
print(i,item)
if isinstance(item, dict):
for sub_k, sub_v in item.items():
if sub_k=="name" :
data.append((sub_k+str(name_count), sub_v))
name_count+=1
elif sub_k=="riskPremSum":
data.append((sub_k+str(other_count), sub_v))
other_count+=1
else:
data.append((sub_k, sub_v))
else:
data.append((k + '.' + str(i), item))
else:
if k=="name" :
data.append((k+str(name_count), v))
name_count+=1
elif k=="riskPremSum":
data.append((k+str(other_count), v))
other_count+=1
else:
data.append((k, v))