У меня такая же проблема, и я использовал следующую процедуру для решения этой проблемы.
Список Python может быть итерационным, даже если вы изменяете его во время итерации по нему. поэтому для следующего кода он будет печатать бесконечно.
for i in list:
list.append(1)
print 1
Таким образом, используя список и dict совместно, вы можете решить эту проблему.
d_list=[]
d_dict = {}
for k in d_list:
if d_dict[k] is not -1:
d_dict[f(k)] = -1 # rather than deleting it mark it with -1 or other value to specify that it will be not considered further(deleted)
d_dict[g(k)] = v # add a new item
d_list.append(g(k))