Случайная замена одинаковых элементов списка Python

Час добрый. Подскажите пожалуйста как можно заменить определенные одинаковые элементы в списке на разные элементы из другого списка. То есть имеется два списка

список 1 = ['пример', 'пример', '♥♥♥', 'пример', '♥♥']
список 2 = ['1', '2', '3', '4', '5', '6', 'текст']

И после обработки списка 1 по ключевому слову 'пример', нужно получить новый список, в котором не будут повторятся переменные из списка 2. Выходные данные должны быть примерно такими

список 1 после обработки = ['1', '6', '♥♥♥', 'текст', '♥♥']

Пробовал код по типу того что оставлю ниже, но он заменяет все ключевые слова на одну и ту же переменную

 for word in text_model_split:
                s = word
                l = s

                with open('short.txt', 'r', encoding='utf-8') as file_short:
                    for line in file_short:
                        line = line.split('\n')
                        short_list.append(line[0])

                        random_element = random.choice(short_list)

                l = [i.replace('пример', f'{random_element}') for i in l]
                l = (''.join(l))

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

Автор решения: Danis
import random

arr1 = ['пример', 'пример', '♥♥♥', 'пример', '♥♥']
arr2 = ['1', '2', '3', '4', '5', '6', 'текст']
res = []

x = []
for el in arr1:
    if el not in x and arr1.count(el) > 1:
        x.append(el)

for i in range(len(arr1)):
    if arr1[i] not in x:
        res.append(arr1[i])
    else:
        n = random.randrange(len(arr2))
        res.append(arr2[n])
→ Ссылка
Автор решения: Arty

Попробовать онлайн!

import random

list1 = ['пример', 'пример', '♥♥♥', 'пример', '♥♥']
list2 = ['1', '2', '3', '4', '5', '6', 'текст']
replace = 'пример'

unique2 = sorted(set(list2))
random.shuffle(unique2)
for j, i in enumerate([i for i, e in enumerate(list1) if e == replace]):
    list1[i] = unique2[j % len(unique2)]

print(list1)

Вывод:

['4', 'текст', '♥♥♥', '2', '♥♥']
→ Ссылка
Автор решения: SergFSM

еще один похожий вариант, с использованием встроенной функции iter():

from random import shuffle

list1 = ['пример', 'пример', '♥♥♥', 'пример', '♥♥']
list2 = ['1', '2', '3', '4', '5', '6', 'текст']
replace = 'пример'

shuffle(list2)
shuf = iter(set(list2))

list1 = [next(shuf) if i==replace else i for i in list1]
print(list1)  # ['текст', '3', '♥♥♥', '1', '♥♥']

UPD только сейчас сообразил, что код выдаст ошибку после исчерпания итератора, то есть list2 должен быть длиннее чем количество одинаковых элементов в list1

→ Ссылка