python как корретно сравнить значения листа со ключами словаря

list_symbols = ["EURUSDrfd", "GBPUSDrfd", "AUDUSDrfd","USDCADrfd"]   
dict_symbols = {"eurusd": 
                   {"price": 1.05},
                "gbpusd": 
                   {"price": 1.22},
                "audusd":
                   {"price": 1.09} }
     

for symbol in list_symbols:
    if symbol in list(dict_symbols.keys()):   # как осушествить проверку в цикле на подобие ??
        print(f"{symbol} find !")
    else:
        print(f"{symbol} not find !")

  • Значения списка не совпадают полностью со значениями ключей словаря, т.е частично равны.

Пример: "EURUSDrfd" = "eurusd"

Заметка: данные в списке могут меняться в след раз: было "EURUSDrfd", стало "rfdEURUSD"


Ответы (2 шт):

Автор решения: CrazyElf

Если лишние символы всегда одинаковые, то можно их просто убирать через replace, ну и ещё приводить в нужный регистр потом:

for symbol in list_symbols:
    symbol = symbol.replace('rfd', '').lower()
    ...

Вывод:

eurusd find !
gbpusd find !
audusd find !
usdcad not find !

В более сложных случаях возможно пригодится библиотека нечёткого сравнения

→ Ссылка
Автор решения: SergFSM

а если зайти с другой стороны, например вот так:

from re import search

list_symbols = ["EURUSDrfd", "GBPUSDrfd", "AUDUSDrfd", "USDCADrfd", "rfdEURUSD"]   
dict_symbols = {"eurusd": {"price": 1.05},
                "gbpusd": {"price": 1.22},
                "audusd": {"price": 1.09}}

for symbol in list_symbols:
    if search(fr'{"|".join(dict_symbols)}',symbol.lower()):
        print(f'{symbol} found')

'''
EURUSDrfd found
GBPUSDrfd found
AUDUSDrfd found
rfdEURUSD found
→ Ссылка