我有以下结构的n个JSON对象数据转储:如何从嵌套的Python字典中的列表中删除一个标记并添加列表?
{
"_id" : {"$numberLong" : "734702956751294464" },
"created_at" : "Mon May 23 11:10:09 +0000 2016",
"entities" : {
"user_mentions" : [ {
"name" : "Thierry Zoller",
"id" : 15589731,
"indices" : [ 3, 17 ],
"screen_name" : "thierryzoller",
"id_str" : "15589731"
} ],
"media" : [ {
"source_status_id" : { "$numberLong" : "734677772963041280" },
"url" : "XXXXX",
"source_user_id_str" : "15589731",
"source_user_id" : 15589731,
"id" : { "$numberLong" : "734677772703019008" },
"type" : "photo",
"id_str" : "734677772703019008"
} ],
"hashtags" : [] },
"favorited" : false,
"in_reply_to_user_id_str" : null,
"extended_entities" : {
"media" : [ {
"source_status_id" : { "$numberLong" : "734677772963041280" },
"media_url_https" : "XXXXX",
"url" : "XXXXX",
"source_user_id_str" : "15589731",
"source_user_id" : 15589731,
"indices" : [ 113, 136 ],
"display_url" : "pic.twitter.com/nO9tw2O4eY",
"id" : { "$numberLong" : "734677772703019008" },
}]
}
}
我要删除“$ numberLong”键,“$”。
下面的代码消除了名单外键的“$”:
def rec_key_replace(obj):
if isinstance(obj, Mapping):
return {key.replace('$', ''): rec_key_replace(val) for key, val in obj.items()}
return obj
如何延长这一功能,这样就可以删除密钥对所有“$”,即使他们是在嵌套列表(它可能是一个列表还包含其他列表等)?
谢谢。
你来了递归,但你只处理'Mapping'类型案件。您需要通过该树中的其他对象和列表进行递归。 –