根据相同值出现的次数创建字典键

我有一个如下的字典,如果发现相同的值 more tahn once 则必须使用增量编号创建字典键。


TT = {

                "TYPE_1" : ['ERROR'],

                "TYPE_2": ['FATAL'],

                "TYPE_3"  : ["TIME_OUT"],

                "TYPE_4" : ['SYNTAX'],

                "TYPE_5" : ['COMPILE'],

        

  }


  m1 = "ERROR the input is not proper"

  m2 = "This should have not occured FATAL"

  m3 = "Sorry TIME_OUT"

  m4 = "SYNTAX not proper"

  m5 = "u r late its TIME_OUT"

值“TIME_OUT”在搜索中出现两次。


  count = 0

  for key in TT.keys():

    print(key)

    Key_1 = key

    

    while key_1 in TT:

      count = count+1

      key_1 = key + "_{}".format(count)

上面的代码给出错误 Key_1 未定义。


预期输出:


如果相同的值出现不止一次,则应使用增量编号“TYPE_3_1”创建字典键:[“TIME_OUT”],


 TT = {

               "TYPE_1" : ['ERROR'],

               "TYPE_2": ['FATAL'],

               "TYPE_3"  : ["TIME_OUT"],

               "TYPE_3_1" : ["TIME_OUT"],

               "TYPE_4" : ['SYNTAX'],

               "TYPE_5" : ['COMPILE'],

       

 }

请对此提出建议。


尚方宝剑之说
浏览 75回答 1
1回答

叮当猫咪

如果您可以重新考虑一些数据结构,那么可以有一种更有效的方法来解决这个问题,但如果那不是一个选项,您可以尝试这个。inputs = ["ERROR the input is not proper", "This should have not occured FATAL","Sorry TIME_OUT","SYNTAX not proper","u r late its TIME_OUT"]basic_types = {                "TYPE_1" : ['ERROR'],                "TYPE_2": ['FATAL'],                "TYPE_3"  : ["TIME_OUT"],                "TYPE_4" : ['SYNTAX'],                "TYPE_5" : ['COMPILE'],        }type_counts = {}results = {}for sentence in inputs:    for basic_type in basic_types:        if basic_types.get(basic_type)[0] in sentence:            type_counts[basic_type] = type_counts.get(basic_type, 0) + 1                        if type_counts[basic_type] == 1:                results[basic_type] = [basic_types.get(basic_type)[0]]            else:                results[basic_type+"_{}".format(type_counts[basic_type] - 1)] = [basic_types.get(basic_type)[0]]print(results)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python