Create lists of unique names in for -loop in python

I want to create a series of lists with unique names inside a for loop and use an index to create liste names. Here is what i want to do

x = [100,2,300,4,75] for i in x: list_i=[] 

I want to create empty lists like

 lst_100 = [], lst_2 =[] lst_300 = [].. 

any help?

+6
source share
3 answers

Do not use dynamically named variables. This makes programming difficult with them. Use dict instead:

 x = [100,2,300,4,75] dct = {} for i in x: dct['lst_%s' % i] = [] print(dct) # {'lst_300': [], 'lst_75': [], 'lst_100': [], 'lst_2': [], 'lst_4': []} 
+12
source

Use the dictionary to store your lists:

 In [8]: x = [100,2,300,4,75] In [9]: {i:[] for i in x} Out[9]: {2: [], 4: [], 75: [], 100: [], 300: []} 

To access each list:

 In [10]: d = {i:[] for i in x} In [11]: d[75] Out[11]: [] 

And if you really want to have lst_ in each label:

 In [13]: {'lst_{}'.format(i):[] for i in x} Out[13]: {'lst_100': [], 'lst_2': [], 'lst_300': [], 'lst_4': [], 'lst_75': []} 
+5
source

A slight deviation from other dict solutions is to use defaultdict. It allows you to skip the initialization step, invoking the selected default value.

In this case, the selected type is a list that will give you empty lists in the dictionary:

 >>> from collections import defaultdict >>> d = defaultdict(list) >>> d[100] [] 
0
source

All Articles