Python 如何将字典值映射到另一个字典
我有一本字典在下面Python 如何将字典值映射到另一个字典,python,dictionary,Python,Dictionary,我有一本字典在下面 { "aggregations": { "A": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": &q
{
"aggregations": {
"A": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{ "key": "ADL", "doc_count": 1 },
{ "key": "SDD", "doc_count": 1 },
{ "key": "JJD", "doc_count": 1 }
]
},
"B": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{ "key": "ABC", "doc_count": 1 },
{ "key": "CDE", "doc_count": 1 },
{ "key": "FGH", "doc_count": 1 }
]
},
"C": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{ "key": "XYX", "doc_count": 1 },
{ "key": "NXS", "doc_count": 1 }
]
}
}
}
- aggregations.keys将是aggregationfilters.fieldName
- aggregations.bucket.key将是aggregationfilters.values.title
- aggregationfilters.values.paragration每次都为null
- aggregations.bucket.doc\u计数将是aggregationfilters.values.count
- 基本上,我需要提取aggregations.keys和aggregations.bucket值并放入不同的字典中
{
"aggregationfilters": [
{
"name": "ABC",
"fieldName": "A",
"values": [
{ "title": "ADL", "paragraph": null, "count": 1 },
{ "title": "SDD", "paragraph": null, "count": 1 },
{ "title": "JJD", "paragraph": null, "count": 1 }
]
}, {
"name": "CDE",
"fieldName": "B",
"values": [
{ "title": "ABC", "paragraph": null, "count": 1 },
{ "title": "CDE", "paragraph": null, "count": 1 },
{ "title": "FGH", "paragraph": null, "count": 1 }
]
}, {
"name": "FGH",
"fieldName": "C",
"values": [
{ "title": "XYX", "paragraph": null, "count": 1 },
{ "title": "NXS", "paragraph": null, "count": 1 }
]
}
]
}
好吧,这是可行的,但即使我尽了最大努力,这看起来还是不干净
导入json
来源={
“聚合”:{
“A”:{
“单据计数错误上限”:0,
“合计其他单据数”:0,
“桶”:[
{“key”:“ADL”,“doc_count”:1},
{“键”:“SDD”,“文档计数”:1},
{“key”:“JJD”,“doc_count”:1},
],
},
“B”:{
“单据计数错误上限”:0,
“合计其他单据数”:0,
“桶”:[
{“key”:“ABC”,“doc_count”:1},
{“key”:“CDE”,“doc_count”:1},
{“key”:“FGH”,“doc_count”:1},
],
},
“C”:{
“单据计数错误上限”:0,
“合计其他单据数”:0,
“bucket”:[{“key”:“XYX”,“doc_count”:1},{“key”:“NXS”,“doc_count”:1}],
},
}
}
转换映射={
“bucket”:“value”,
“单据计数”:“计数”,
“键”:“标题”,
}
移除映射={“总和其他文档计数”,“文档计数错误上界”}
add_map={“name”:“Changed VAL”,“fieldName”:“VAL”}
def转换器(
来源:dict,转换映射:dict,删除映射:set,添加映射:dict
):
working_dict={k:v代表k,v在source_u.items()中]
变量_identifier=“VAL”
对于键,工作指令项()中的内部指令:
内腔:dict
对于rm\u,请在“删除映射”中键入:
尝试:
内部dic.pop(遥控钥匙)
除KeyError外:
通过
对于添加键,请在添加映射项()中添加值:
内部dic[添加密钥]=添加值替换(变量标识符,密钥)
dumped=json.dumps(内部空间,缩进=2)
对于原始,转换映射项()中的目标:
转储=转储。替换(原始,目标)
产生json.loads(转储)
转换={
“聚合过滤器”:列表(
转换\u生成器(源[“聚合”]、转换\u映射、删除\u映射、添加\u映射)
)
}
对于转换的[“聚合过滤器”]中的内部目录:
对于内部指令[“值”]中的偶数内部指令:
偶数内部dict[“段落”]=无
打印(json.dumps(已转换,缩进=2))
输出:
{
"aggregation_filters": [
{
"values": [
{
"title": "ADL",
"count": 1,
"paragraph": null
},
{
"title": "SDD",
"count": 1,
"paragraph": null
},
{
"title": "JJD",
"count": 1,
"paragraph": null
}
],
"name": "Changed A",
"fieldName": "A"
},
{
"values": [
{
"title": "ABC",
"count": 1,
"paragraph": null
},
{
"title": "CDE",
"count": 1,
"paragraph": null
},
{
"title": "FGH",
"count": 1,
"paragraph": null
}
],
"name": "Changed B",
"fieldName": "B"
},
{
"values": [
{
"title": "XYX",
"count": 1,
"paragraph": null
},
{
"title": "NXS",
"count": 1,
"paragraph": null
}
],
"name": "Changed C",
"fieldName": "C"
}
]
}
始终显示您的代码,若这是一个有效的代码,那个就太好了——表明您已经在您的问题上付出了至少那个么值得的努力
我不觉得麻烦,因为这感觉像是解谜,但其他人可能不会。那么你当前的代码在哪里?@tibebs.M有错误,先生,我需要发布非工作代码吗?是的,你应该。你能帮我在下面写下add_map=
{“aggregation_filters”:[{{“name”:“ABC”,“fieldName”:“A”,“values”:[]},{“name”:“CDE”,“fieldName”:“B”,“值”:[]},{“名称”:“FGH”,“字段名”:“C”,“值”:[]}]}
你能检查一下我的延迟情况吗?我在服兵役,在电脑上只有4个小时的访问权限,我会进行相应的检查和更新,尽管如此。@Nons我找不到获得ABC CDE FGH输出所需的任何通用计算,请尽可能详细地填写,希望是你正在使用的真实数据样本。通用代码不是可能没有实际数据进行测试。