Есть ли способ вернуть ключ для совпадения, найденного в словаре, используя:
if val in dict.values():
# print the key of the value in the dictionary that matches val
Я пытаюсь использовать одну и ту же функцию поиска при поиске трех разных типов значений. Один — буквенно-цифровой, другой — строка, а третий — число. В функции поиска я вызываю приведенный выше код. В этой функции я просматриваю словарь, содержащий известные наборы этих значений (три идут вместе), пытаясь сопоставить отдельные значения, считанные из файла, с этими известными наборами в словаре. У меня есть порядок поиска (буквенно-цифровой, строковый, числовой). Буквенно-цифровые и числовые записи являются один к одному, но строковая запись в известном словаре представляет собой список. Я предполагал, что dict.iteritems()
не будет искать в списке строк неизвестную строку, а val in dict.values()
будет. Таким образом, использование последнего.
В зависимости от того, какие совпадения (буквенно-цифровые не совпадают, но числовые и т. д.) я хотел вернуть ключ, чтобы узнать, как входящие данные сопоставляются с известным набором.
Поэтому вместо того, чтобы писать две или три отдельные функции для каждого типа клавиш, я пытался использовать хитрый код словаря, чтобы сохранить их до одной.
Изменить:
Итак, предположим, у меня есть этот словарь:
dict = {'alphaNumeric':'A7', 'number':'36', 'string':['red','green','blue']}
и эти неполные наборы значений для поиска по нему:
sets = [['A7','',''],[['','36',''], ['','','green']]
Я пытался разработать функцию для обработки любого поиска:
def searchFun(sets, dict):
for set in sets:
for val in sets:
if val in dict.values():
return val, #KEY WHERE IT WAS FOUND#