Print dict with varying-length lists
I don't see any reason why the PrintDict class should exist.  Furthermore, there's no point in keeping self.data as part of the object state.  A standalone function print_dict_to_screen(data) would work just fine.

Much of the code is concerned with printing out the value lists in the right format.      This whole chunk of code…


items = len(self.data[key])
iterate = -1
for i in range(items):
    iterate += 1
    print self.data[key][iterate],



… could be replaced with

print ' '.join(self.data[key])


It's usually more manageable if you consistently put your newlines at the end rather than at the beginning of your output.

There's no need to cast the key as a str, since the %s format specification always interprets its input as a string.

So, the code can be simplified to:

def print_dict_to_screen(self, data):
    for key in sorted(data):
        print "%s\n%s\n" % (key, ' '.join(data[key]))


It would be even cleaner if the output had no excessive leading or trailing newlines.  To accomplish that, I would use join() again:

def dict_to_string(data):
    return "\n\n".join(
        "%s\n%s" % (key, ' '.join(data[key])) for key in sorted(data)
    )


Here, dict_to_string() returns the string to be printed rather than printing it directly.  Then, the caller is free to print the resulting string, log it to a file, or whatever.