exercises complete the set adt by implementing intersect(and difference( modify the set(constructor to accept an optional variable argument to which collection of initial values can be passed to initialize the set the prototype for the new constructor should look as followsdef setself*initelements none it can then be used as shown here to create set initialized with the given valuess set add new operation to the set adt to test for proper subset given two setsa and ba is proper subset of bif is subset of and does not equal add the str(method to the set implementation to allow user to print the contents of the set the resulting string should look similar to that of listexcept you are to use curly braces to surround the elements add python operator methods to the set class that can be used to perform similar operations to those already defined by named methodsoperator method add (setbmul (setbsub (setblt (setbcurrent method union(setbinterset(setbdifference(setbissubsetof(setb add new operation keyarray(to the map class that returns an array containing all of the keys stored in the map the array of keys should be in no particular ordering add python operators to the map class that can be used to perform similar operations to those already defined by named methodsoperator method setitem (keyvaluegetitem (keycurrent method add(keyvaluevalueof(key design and implement the iterator class setiterator for use with the set adt implemented using list