1) yes. Use DictVectorizer or HashVectorizer from the feature_extraction module. 2) This is a multilabel problem. Maybe use the OneVsRestClassifier from the multi_class module. It will train a separate classifier for each class. 3) Using a multilabel classifier / one classifier per calss will do that.
Take a look at http://scikit-learn.org/dev/auto_examples/grid_search_text_feature_extraction.html and http://scikit-learn.org/dev/auto_examples/plot_multilabel.html