0. В чому сенс розповідати, що списків два, якщо треба лише унікальні елементи з другого? Перший список узагалі не використовується. Чи ви неправильно описали, в чому проблема.
1. Цикл буде в будь-якому разі - просто іноді його буде сховано в уже написану функцію.
2. Вам потрібно зберігати послідовність елементів?
3. Проблема в тому, що словники (і списки, і множини) передаються за посиланням і не можуть бути ключами словника. На прикладі словника:
l = [1,2]
l_ref = l #посилання
l_copy = l[:] #копія
l==l_copy1==l_ref #True, всі вони однакові
d = {l:3} #припустимо, що таке було б можливо
l_ref.append(3) #тепер змінився і l, бо словники передаються за посиланнями
l_copy==l #False, l змінився, l_copy==[1,2], l==[1,2,3]
d[l_copy]==d[l] #що тепер тут буде?
4. Ну а в цілому - напишіть функцію, що перетворює словник на щось гешоване (тобто число чи str) й однакове для тотожних словників, наприклад,
def hash(d):
return ''.join(repr(k)+repr(v) for k,v in d.items())
і збирайте його в словник {hash(e):e for e in lst}.
values() з цього словника будуть унікальні.