2015-06-02 2 views
1

Я хочу найти словарь python для ключа, который соответствует начальной последовательности букв. Однако это немного сложнее, и я потерял себя на полпути в замешательстве.Поиск словаря Python для соответствия ключа

Пример: У меня есть строка «ABSTTHGIHG», и я хочу найти словарь для ключа, который точно соответствует последним 9 буквам строки. Если ни один не найден, я хочу найти другой словарь для ключа, который точно соответствует последним 8 буквам строки.

Я не знаю, как подобрать определенное количество букв (здесь «последние буквы x») с ключом (или как искать ключ), поэтому у меня есть надежды, что кто-то здесь может назвать имя функция, которая позволяет мне это делать или где я могу ее найти. Нет кода, который я могу представить, так как это будет первое, что делает программа. Могу ли я указать «последние 9 букв» с чем-то вроде x = string[1:]? Это была бы единственная идея, у меня есть, как указать, какие буквы строки использовать для поиска.

+0

Проверьте это http://stackoverflow.com/a/4843172/2182940. Надеюсь, это поможет :) –

+0

x = string [-9:] должно быть достаточно. Это не работает для вас? – gabhijit

+0

Возможно, стоит создать новый тип, который соответствует последним n символам, если вам нужно, чтобы это было эффективно. –

ответ

3

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

for key in dictionary.keys(): 
    if key[-9:] == 'BSTTHGIHG': 
     print('I found it!!') 
     break 

Обратите внимание на использование key[-9:]

+0

Это действительно весь ключ, который я хочу совместить с последними буквами x исходной строки. – grindbert

1
st = "ABSTTHGIHG" 

for x in range(1,len(st)): 
    for key in dictionary.keys(): 
     if st[x:] == key: 
      #do something with your key 
     print(st[x:]) 

, что, как вы можете получить последние х буквы вашего stirng

из

BSTTHGIHG 
STTHGIHG 
TTHGIHG 
THGIHG 
HGIHG 
GIHG 
IHG 
HG 
G 

поэтому у вас есть последние 9 букв, 8, 7 ....

+0

каждый раз, когда я хочу запустить его, он показывает, что объект AttributeError: 'list' не имеет атрибутов 'keys'. любая идея почему? – grindbert

+0

@grindbert Возможно, у вас есть список словарей –

+0

, что возможно, я проверю его. – grindbert

0

Элемент в словаре выглядит как {'key', 'value'} ключи уникальны в словаре, а значения могут отсутствовать. предположим, что ваш словарь выглядит

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; 

так, чтобы получить значение, соответствующее одному ключу, вы можете сделать так:

print dict['Name'] # which will display 'Zara' 

Теперь в отношении строк, если у вас есть VAL = «ABCDEFGH» и вы хочу получить подстроку из индекса 1 до конца вы можете сделать так:

val = "ABCDEFGH" 
print val[1:] # this will display "BCDEFGH" 
print val[2:] # this will display "CDEFGH" 
# A negative index accesses elements from the end of the list counting backwards. 
print val[-1:] # this will display "H" 
print val[-3:] # this will display "FGH" 

так для примера вы хотите найти словарь для ключа, который соответствует именно последним 9 букв строки

st = "ABSTTHGIHG" 
print dict[st[-9:]] # this will display the value corresponding to the key "BSTTHGIHG" if it exists 
Смежные вопросы