如何在python中处理二维dict?

时间:2013-11-19 09:55:21

标签: python

输入数据

{'NOMSEXITInterview__INTTYPE_2': u'2',
 'NOMSEXITInterview__INTDUR_2': u'3',
 'NOMSEXITInterview__GENDER_2': u'3', 
 'NOMSEXITInterview__EMPLOY_2': u'6',
 'Referral__referral_type': u'food', 
 'Referral__ok_to_mail': u'False', 
 'Referral__okay_to_call': u'False',
 'Referral__okay_to_leave_message': u'True',
 'data_model_name': ['NOMSEXITInterview', 'Referral']}

我想输出以下定义格式

{'NOMSEXITInterview':{'INTTYPE_2':'2','INTDUR_2':'3','GENDER_2','EMPLOY_2':'6'}}  
{'Referral':{'referral_type':'food',...}}  

等等

任何想法?????

1 个答案:

答案 0 :(得分:2)

data = {'NOMSEXITInterview__INTTYPE_2': u'2',
 'NOMSEXITInterview__INTDUR_2': u'3',
 'NOMSEXITInterview__GENDER_2': u'3', 
 'NOMSEXITInterview__EMPLOY_2': u'6',
 'Referral__referral_type': u'food', 
 'Referral__ok_to_mail': u'False', 
 'Referral__okay_to_call': u'False',
 'Referral__okay_to_leave_message': u'True',
 'data_model_name': ['NOMSEXITInterview', 'Referral']}

result = {}
for k, v in data.items():
    parts = k.split("__")
    if len(parts) == 2:
        result.setdefault(parts[0], {})[parts[1]] = v
    else:
        result[k] = v
print result

<强>输出

{'Referral': {'referral_type': u'food', 'ok_to_mail': u'False', 'okay_to_call': u'False', 'okay_to_leave_message': u'True'},
 'data_model_name': ['NOMSEXITInterview', 'Referral'],
 'NOMSEXITInterview': {'INTTYPE_2': u'2', 'INTDUR_2': u'3', 'GENDER_2': u'3', 'EMPLOY_2': u'6'}}
相关问题