Идентификация заданной последовательности в ключе словаря python

#python #dictionary

Вопрос:

Я хочу узнать, существует ли соответствующая последовательность в какой-либо паре ключ-значение, а также как определить правильный ключ, который включает последовательность, и каковы условия, которые приводят к ее реализации и печати в коде python. Здесь я добавляю последовательность для вашей справки, которую я хочу определить как последовательность 0,1,2,3

 mydir = {
    "p1":[0,0,1,1,2,2,3,3],  #not includes the relavent sequence 
    "p2":[0,0,1,2,3,4,5],    #includes the relavent sequence
    "p3":[0,1]               #not includes the relavent sequence   
}

if(#condition for identify p2 as a correct key):
   print(#p2 Identified!)
else:
   print("Not Identified!")



 

Комментарии:

1. Почему вы используете оба python2 python3 тега и? Это потому, что вы хотите знать ответ как для python2, так и для python3?

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

Ответ №1:

Вы можете написать пользовательскую функцию, которая выполняет итерацию по словарю и создает «подпоследовательности» той же длины, что и последовательность. Затем верните все ключи, в которых найдено совпадение:

 def check_sequence(s, d):
    keys = list()
    for k in d:
        sublists = [d[k][i:i len(s)] for i in range(len(d[k])-4)]
        if s in sublists:
            keys  = [k]
    return keys
>>> check_sequence([0, 1, 2, 3], mydir)
['p2']
 

Комментарии:

1. О чем [0, 12, 34] ?