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

时间:2020-08-25 02:47:39

标签: python

我有一个字典,如下所示,如果一次找到更多相同的值,则必须使用增量编号来创建字典键。

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”创建dict键:[“ TIME_OUT”],

 TT = {
               "TYPE_1" : ['ERROR'],
               "TYPE_2": ['FATAL'],
               "TYPE_3"  : ["TIME_OUT"],
               "TYPE_3_1" : ["TIME_OUT"],
               "TYPE_4" : ['SYNTAX'],
               "TYPE_5" : ['COMPILE'],
       
 }

请对此提出建议。

1 个答案:

答案 0 :(得分:0)

如果您可以重新考虑某些数据结构,那么可能会有一种非常有效的解决方法,但是如果这不是一种选择,您也许可以尝试一下。

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)