for-loop内で一意の名前を持つ一連のリストを作成し、そのリストを使用してリスト名を作成したいとします。ここで私は、私は、このようなfor-loopでPythonで一意の名前のリストを作成
lst_100 = [], lst_2 =[] lst_300 = []..
任意の助けとして、空のリストを作成したい
x = [100,2,300,4,75]
for i in x:
list_i=[]
何をしたいのですか?
for-loop内で一意の名前を持つ一連のリストを作成し、そのリストを使用してリスト名を作成したいとします。ここで私は、私は、このようなfor-loopでPythonで一意の名前のリストを作成
lst_100 = [], lst_2 =[] lst_300 = []..
任意の助けとして、空のリストを作成したい
x = [100,2,300,4,75]
for i in x:
list_i=[]
何をしたいのですか?
動的に名前が付けられた変数を作成しないでください。それは彼らと一緒にプログラムするのが難しいです。
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': []}
はあなたのリストを保持するために、辞書を使用します:
In [8]: x = [100,2,300,4,75]
In [9]: {i:[] for i in x}
Out[9]: {2: [], 4: [], 75: [], 100: [], 300: []}
各リストにアクセスするには:代わりに、辞書を使用
In [10]: d = {i:[] for i in x}
In [11]: d[75]
Out[11]: []
をそして、あなたは本当にそれぞれにlst_
を持つようにしたい場合はラベル:
In [13]: {'lst_{}'.format(i):[] for i in x}
Out[13]: {'lst_100': [], 'lst_2': [], 'lst_300': [], 'lst_4': [], 'lst_75': []}
それは私の最初の考えであった、あなたはそれに最初に行く:P –
@ F3AR3DLEGEND - それはそれを行う最もpythonic方法だと思う:) – root
これは*辞書の理解*ですか? :-) –
他のdict-solutionsに若干のバリエーションがあるのは、defaultdictを使うことです。選択した型のデフォルト値を呼び出すことによって、初期化ステップをスキップすることができます。
この場合、選択したタイプが辞書にあなたの空のリストを与えるリストです:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[100]
[]
は、元のxの順序を保持したままで行う方法はありますか?代わりに私はここで、ルートの答えでは、 "100,2,300,4,75"の順番が保持されていないことを確認します。私はこれがいくつかの独身の財産であると思います。 – Coolio2654
@ Coolio2654:そうです。 'dict'キーは注文されません。キーが挿入された順序を保持するには、['collections.OrderedDict'](https://docs.python.org/2/library/collections.html#collections.OrderedDict)を使用します:(' dct = } ' - >' 'コレクションをインポートする' 'dct = collections.OrderedDict()')。 – unutbu