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