I have multiple lists and I want to zip them like shown in the following example :
d = {}
clients = ["client_1","client_2","client_3",...] # n number of client
# every client has a list of element :
d["acc_list" + client] = [1, 2, 3, ...]
So how could I zip them without knowing the number of clients :
acc_clients = zip(d["acc_list" + "client_0"],d["acc_list" + "client_2"],d["acc_list" + "client_3"], .... )
>Solution :
So you already have the client part in client_names, so you can make a list of them:
client_d = [d["acc_list" + client ] for client in client_names]
Now to zip them together you can apply to * operator to the list:
acc_clients = zip(*[d["acc_list" + client ] for client in client_names])
or as @wwii points out, we don’t need to get a list comprehension to iterate over client_names first and then let * iterate over the result, we can make a generator expression:
acc_clients = zip(*(d["acc_list" + client ] for client in client_names))