Инициализируйте ваши правильные значения внутри set
.
correct = {'c', 'e'}
# correct = set(LIST)
Теперь, предполагая, что значения списка с более чем одним элементом могут иметь только один правильный элемент, вы можете построить словарь, используя условное понимание:
d2 = {k : list(correct.intersection(v)) if len(v) > 1 else v for k, v in d.items()}
print(d2)
# {'1': ['a'], '2': ['c'], '3': ['e'], '4': ['g']}
Если может быть более одного возможного правильного значения, вы можете выбрать только первое.
d2 = {}
for k, v in d.items():
if len(v) > 1:
c = list(correct.intersection(v))
v = c[:1]
d2[k] = v
print(d2)
# {'1': ['a'], '2': ['c'], '3': ['e'], '4': ['g']}
Если вы хотели изменить d
вместо (потому что создание полной копии может быть дорогим), то вышеупомянутое решение упрощается до
for k, v in d.items():
if len(v) > 1:
c = list(correct.intersection(v))
d[k] = c[:1]
print(d)
# {'1': ['a'], '2': ['c'], '3': ['e'], '4': ['g']}