Ошибка относится к объекту ha sh, который не должен изменяться во время выполнения программы python. Попробуйте разложить этот оператор, и вы увидите, что set(rm)
не работает. Элементы этого списка также являются списками, и изменяемые вещи не могут быть хешированы при использовании здесь слова python. Это связано с тем, что изменяемые вещи могут быть изменены позже, что делает недействительным этот ha sh.
Наборы используют объект ha sh для поиска значений в наборе. Если ha sh объекта изменится, то похожие и непохожие значения больше не могут быть определены.
Я не уверен, что rm
должно быть, но похоже, что у него один элемент списки и те элементы, которые должны быть в заданной операции.
rm=[[],['COC1=C(C=C(C=C1)CC2=NC=CC3=CC(=C(C=C32)OC)OC)OC.Cl'], ['C[C@@H]1[C@H]([C@@H]([C@@H]([C@@H](O1)OC\\2CC3C(C(CC(O3)(CC(CC(CC(CC(CC(=O)CC(CC(=O)OC(C(/C=C/C=C/C=C\\C=C/C=C/C=C/C=C2)C)C(C)CCC(CC(=O)C4=CC=C(C=C4)NC)O)O)O)O)O)O)O)O)C(=O)OC)O)N)O']]
smiles_dict=['CCCC1=NN(C2=C1N=C(NC2=O)C3=C(C=CC(=C3)C(=O)CN4CCN(CC4)CC)OCC)C', 'CCCC1=NN(C2=C1N=C(NC2=O)C3=C(C=CC(=C3)S(=O)(=O)N4CCN(CC4)CC)OCC)C']
rm2 = []
for lst in rm:
rm2.extend(lst)
nsmilesd = {}
nsmilesd= list(set(smiles_dict)-set(rm2))