Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将字典值映射到另一个字典_Python_Dictionary - Fatal编程技术网

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输出所需的任何通用计算,请尽可能详细地填写,希望是你正在使用的真实数据样本。通用代码不是可能没有实际数据进行测试。