I'm looking to iterate a list of servers executing a command via subprocess.check_output on each. The output of each is split using csv.DictReader. I would like to be able to create dictionaries for each server/cmd output then join them after the server_list has been fully iterated. I can then filter all the output. Is it possible? if so could someone point me in the right direction please.
def testremote(server_list, domain, username, password, user_list, debug):
    for server in server_list:
        try:
            cmd = subprocess.check_output(["tasklist", "/V", "/S", server, "/U", domain + "\\" + username, "/P", password, "/FO", "CSV"])
            tasks = csv.DictReader(cmd.splitlines(), dialect="excel") # would like to create dynamic tasks (ie tasks1, tasks2 etc for each server)
        except CalledProcessError as e:
            errormessage = e.output
            if "RPC" in errormessage:
                print "{0}: RPC service is not responding, most likley the server is not live." .format(server)
                print "Removing server from list.\n"
                server_list.remove(server)
            elif "password" in errormessage:
                print "{0}: The username or password are incorrect." .format(server)
                print "Removing server from list.\n"
                server_list.remove(server)
            else:
                print errormessage
    #Filtering output        
    users = set()
    for task in tasks:
        if task['User Name'] == 'N/A': continue
        task_domain, task_user = task['User Name'].split('\\')
        if domain == task_domain and task_user in user_list:
            users.add(task['User Name'])
    print '\n'.join(users) 
NewCode: Includes spinlock's suggestion from Answer below
def testremote(server_list, domain, username, password, user_list, debug):
    all_tasks = []
    for server in server_list:
        try:
            cmd = subprocess.check_output(["tasklist", "/V", "/S", server, "/U", domain + "\\" + username, "/P", password, "/FO", "CSV"], stderr=subprocess.STDOUT)
            tasks = csv.DictReader(cmd.splitlines(), dialect="excel") # would like to create dynamic tasks (ie tasks1, tasks2 etc for each server)
            all_tasks.append(tasks)
        except CalledProcessError as e:
            errormessage = e.output
            if "RPC" in errormessage:
                print "{0}: RPC service is not responding, most likley the server is not live." .format(server)
                print "Removing server from list.\n"
                server_list.remove(server)
            elif "password" in errormessage:
                print "{0}: The username or password are incorrect." .format(server)
                print "Removing server from list.\n"
                server_list.remove(server)
            else:
                print errormessage        
    users = set()
    for task in itertools.chain(*all_tasks):
        if task['User Name'] == 'N/A': continue
        task_domain, task_user = task['User Name'].split('\\')
        if domain == task_domain and task_user in user_list:
            users.add(task['User Name'])
    print '\n'.join(users) 
 
    