Python - разбиение строки на список по значению кортежа dict - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть кортеж.Я соответствую первому значению кортежа в строке.Если значение удовлетворено, я хотел бы добавить это значение, а также следующее количество символов в число на основе второго кортежа, как одну запись в список

data = 60806122225212888810

Dict = {'STOP' : ('60', 2), 'ADD' : ('61', 4), 'MUL' : ('52', 0), 'SUB' : ('10', 0), 'START' : ('12', 4)}

. Мой желаемый результат - список['6080', '612222', '52', '128888', '10'] `

Это мой текущий код:

 while i<len(data):
    if data [i:i+2] in Opcodes_Dict[item][0]:
        L.append(data[i:i+Opcodes_Dict[item][1]])
        i+=Opcodes_Dict[item][1]
    else:
      L.append(data[i:i+2])
      i+=2
 print(L)

Извините, если это труднопонимаю, я очень застрял

1 Ответ

0 голосов
/ 26 апреля 2018

Так как ключ не имеет значения, сделайте подсказку только с кодом операции и значением.В вашем цикле проверьте, находится ли код операции в этом новом dict, и нарежьте соответствующим образом:

data = '60806122225212888810'

Dict = {'STOP' : ('60', 2), 'ADD' : ('61', 4), 'MUL' : ('52', 0), 'SUB' : ('10', 0), 'START' : ('12', 4)}

Opcodes_Dict = {a:b for k,(a,b) in Dict.items()}

i = 0
L = []
while i < len(data):
    op = data[i:i+2]
    if op in Opcodes_Dict:
        value = Opcodes_Dict[op]
        L.append(data[i:i + 2 + value])
        i += 2 + value
    else:
        L.append(op)
        i += 2
print(L)

Вывод:

['6080', '612222', '52', '128888', '10']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...