我有一个如下列表:
[(u'profileDetails', {u'customerCategory': {u'masterCode': u'PRECAT1'},
u'identificationDetails': {u'identificationDetail':
[{u'idType': {u'masterCode': u'PASS'}},
{u'idType': {u'masterCode': u'REGFORM'}}]},
u'customerSubCategory': {u'masterCode': u'PRESCAT1'}}),
(u'_id', u'58872e99321a0c8633291b3f')]
我想将其转换如下:
{"profileDetails":{"customerCategory":{"masterCode":"PRECAT1"},
"identificationDetails":{"identificationDetail":
[{"idType":{"masterCode":"PASS"}},
{"idType":{"masterCode":"REGFORM"}}]},
"customerSubCategory":{"masterCode":"PRESCAT1"}},
"_id": "58872e99321a0c8633291b3f"}
我理解上面的结果包含元组,列表和字典以及unicode格式的所有数据。
我需要将unicode转换为字符串和元组并将列表转换为字典。我怎样才能在Python中实现这一目标?
答案 0 :(得分:3)
使用词典理解:
In [2]: lst = [(u'profileDetails', {u'customerCategory': {u'masterCode': u'PRECAT1'}, u'identificationDetails': {u'identificationDetail': [{u'idType': {u'masterCode': u'PASS'}}, {u'idType': {u'masterCode': u'REGFORM'}}]}, u'customerSubCategory': {u'masterCode': u'PRESCAT1'}}),
...: (u'_id', '58872e99321a0c8633291b3f')]
In [3]: {i: j for i, j in lst}
Out[3]:
{'_id': '58872e99321a0c8633291b3f',
'profileDetails': {'customerCategory': {'masterCode': 'PRECAT1'},
'customerSubCategory': {'masterCode': 'PRESCAT1'},
'identificationDetails': {'identificationDetail': [{'idType': {'masterCode': 'PASS'}},
{'idType': {'masterCode': 'REGFORM'}}]}}}
请注意,因为我没有ObjectId
,所以我用它的字符串参数替换它。
如果您的列表包含长度为1或大于2的元组,则可以使用try-except来处理ValueError
:
def dict_creator(my_list):
for tup in my_list:
try:
key, value = tup
except ValueError:
# do what you want with tup
else:
yield key, value
final_dict = dict(dict_creator(my_list))
或者,如果你只是想忽略这些元组,你可以通过字典理解检查长度:
{tup[0]: tup[1] for tup in lst if len(tup) == 2}
如果你有一个元组字符串,你可以使用ast.literal_eval
将字符串转换为元组对象。
答案 1 :(得分:1)
只需将元组列表类型转换为dict
:
>>> dict(my_list)
将返回:
{'_id': '58872e99321a0c8633291b3f',
'profileDetails': {
'customerSubCategory': {'masterCode': 'PRESCAT1'},
'identificationDetails': {'identificationDetail': [
{'idType': {'masterCode': 'PASS'}},
{'idType': {'masterCode': 'REGFORM'}}
]},
'customerCategory': {'masterCode': 'PRECAT1'}}
}
此处,my_list
是问题中提到的元组列表。
当[(x1, y1), (x2, y2)]
形式的元组(或列表)列表被类型转换为dict
时,python的解释器创建格式为{x1: y1, x2: y2}
的dict对象,即所有元素元组的第0个索引变为 key ,索引1处的元素变为 value 到结果字典。