gpt4 book ai didi

python:检查一个键中一定数量的字符是否与同一字典中另一个键的字符匹配

转载 作者:行者123 更新时间:2023-11-30 22:31:14 28 4
gpt4 key购买 nike

我有以下字典:

dic_raw={'M.ESE18.COFMSDM01V.MW.IT':{'initiativeType': 'Activation', 'initiativeName': 'Campaign1'},'M.ESE18.COFMSDM01V.MN.ML':{'initiativeType': 'Revokation', 'initiativeName': 'Campaign 2'},'M.ESE18.COFMSDM01V.CI.CR':{'initiativeType': 'Stratification', 'initiativeName': 'Campaign 3'},'M.ESE18.COFMSDM01A.OP.TA':{'initiativeType': 'Activation', 'initiativeName': 'Campaign 5'}, 'N.ESE18.FFFMSDM01A.NS.TA':{'initiativeType': 'Activation', 'initiativeName': 'Campaign 6'}, 'N.ESE18.FFFMSDM01A.OP.TA':{'initiativeType': 'Activation', 'initiativeName': 'Campaign 4'}}  

我需要创建另一个字典(dic_new),其信息与dic_raw相同+键的另一个深度级别。 dic_new 中的新级别键来自于初始 dic_raw 中任何键的前 18 个匹配字符,它的值应该是“old”的嵌套字典。 "18 个字符匹配的键 + 所有“旧”值。

像这样:

dic_new={'M.ESE18.COFMSDM01V': {'M.ESE18.COFMSDM01V.MW.IT': {'initiativeType': 'Activation', 'initiativeName': 'Campaign 1'}, 'M.ESE18.COFMSDM01V.MN.ML': {'initiativeType': 'Revokation', 'initiativeName': 'Campaign 2'}, 'M.ESE18.COFMSDM01V.CI.CR': {'initiativeType': 'Stratification', 'initiativeName': 'Campaign 3'}}, 'N.ESE18.FFFMSDM01A':{'N.ESE18.FFFMSDM01A.NS.TA': {'initiativeType': 'Activation', 'initiativeName': 'Campaign 6'}, 'N.ESE18.FFFMSDM01A.OP.TA': {'initiativeType': 'Activation', 'initiativeName': 'Campaign 4'}}, 'M.ESE18.COFMSDM01A':{'M.ESE18.COFMSDM01A.OP.TA':  {'initiativeType': 'Activation', 'initiativeName': 'Campaign 5'}}}

例如:

  • 第一个键“M.ESE18.COFMSDM01V.MW.IT”将与初始字典中的所有其他键进行比较
  • 因为它的前 18 个字符与字典中其他 2 个键的情况相同 ('M.ESE18.COFMSDM01V.MN.ML','M.ESE18.COFMSDM01V.CI.CR'),然后
  • M.ESE18.COFMSDM01V(3个键的公共(public)部分)将成为新字典中的新“顶级”键,匹配的2个键现在变成它的值嵌套字典

因此

 M.ESE18.COFMSDM01V.MW.IT:{'initiativeType': 'Activation','initiativeName': 'Campaign 1'}
M.ESE18.COFMSDM01V.MN.ML:{'initiativeType': 'Revokation','initiativeName': 'Campaign 2'}

应该变成

M.ESE18.COFMSDM01V:{'M.ESE18.COFMSDM01V.MW.IT': {'initiativeType': 'Activation', 'initiativeName': 'Campaign 1'},'M.ESE18.COFMSDM01V.MN.ML': {'initiativeType': 'Revokation', 'initiativeName': 'Campaign 2'}}

提及:

  • 在多种情况下,多个初始键将具有共同的字符,因此需要包含在新的顶级 key ,但我不知道是哪个或有多少个
  • 字典中的某些键将是完全唯一的(就其前 18 个字符而言),但即使对于新字典中的键,我仍然需要创建相同的结构

我在编程方面非常陌生,所以我尝试以多种方式解决这个问题,但我真的找不到解决方案。我相信我无法将问题正确地分解为单独的部分(以逐个字符可索引的方式查找匹配的键——无法弄清楚如何在字典中做到这一点,所以我需要移动键到一个列表,但后来我陷入了如何正确进行比较的困境,然后将我需要的部分移动到一个新的字典,同时还将其复制为嵌套字典,它是旧的匹配值,等等)

如有任何帮助,我们将不胜感激!

最佳答案

一种轻松实现此目的的方法:

dic_new = {}
for key, value in dic_raw.iteritems():
dic_new.setdefault(key[:18], {}).setdefault(key, value)

关于python:检查一个键中一定数量的字符是否与同一字典中另一个键的字符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862780/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com