Есть ли причина, по которой не все цвета являются ключами к диктовке? Например:
cols = {'white': 'black', 'red' : 'green', 'yellow': 'blue', 'black': 'white', 'green': 'red', 'blue': 'yellow'}
Тогда вы можете получить ответ, просто проверив каждое существование цвета в dict и вернув значение.
Если вы не хотите расширять dict вручную, выможет программно сделать это:
inverse_dict = { v:k for (k,v) in cols.items() }
Кроме того, вам не нужно вызывать cols.keys (), чтобы проверить, существует ли ключ в dict. Просто проверьте с помощью
if col in cols
Это более эффективно, потому что это проверка хеш-таблицы (~ O (1)), а не проверка списка (O (n)).
Добавление этогоВ общем, у вас может быть такое решение:
def revert_color(colors):
colors = {'white': 'black', 'red' : 'green', 'yellow': 'blue'}
inverse_colors = { v:k for (k,v) in cols.items() }
complete_inverse = {**colors, **inverse_colors}
# If color exists in the dict, return the inverse, else return the color itself.
return [ complete_inverse[color] if color in complete_inverse else color for color in colors ]