正在 Python 词典中搜索匹配键

Searching Python dictionary for matching key

我想在 python 词典中搜索与初始字母序列匹配的关键字。不过有点复杂,我迷迷糊糊中途迷路了。

示例: 我有一个字符串 "ABSTTHGIHG",我想在字典中搜索与该字符串的最后 9 个字母完全匹配的键。如果找到 none,我想在另一个字典中搜索与字符串的最后 8 个字母完全匹配的键。

我不知道如何将特定数量的字母(此处为“最后 x 个字母”)与密钥匹配(或如何搜索密钥)所以我希望这里有人可以命名一个使我能够这样做的函数,或者我可以在哪里查找它。 没有我可以展示的代码,因为这是程序要做的第一件事。 我可以用 x = string[1:] 之类的东西指定“最后 9 个字母”吗?那将是我唯一的想法如何指定要用于搜索的字符串中的哪些字母。

由于字典是哈希表,您不能像查找整个键那样仅通过键的最后一位来查找它们。相反,您必须遍历键

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

注意key[-9:]

的使用
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 的最后 x 个字母

出来

BSTTHGIHG
STTHGIHG
TTHGIHG
THGIHG
HGIHG
GIHG
IHG
HG
G

所以你有最后 9 个字母,8、7....

字典中的一个元素看起来像 {'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