2013-02-11 11 views
6

में -loop के लिए एक में अद्वितीय नामों की सूची बनाने के लिए मैं एक लूप के अंदर अद्वितीय नामों के साथ सूची की एक श्रृंखला बनाने और liste नाम बनाने के लिए सूचकांक का उपयोग करना चाहते। यहाँ है कि मैं क्याअजगर

x = [100,2,300,4,75] 

for i in x: 

    list_i=[] 

मैं ऐसे

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

किसी भी मदद के रूप में खाली सूचियां बनाने के बारे में करना चाहते है?

उत्तर

12

गतिशील नामित चरों मत करना। यह उनके साथ कार्यक्रम करना मुश्किल बनाता है। अपनी सूची धारण करने के लिए

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': []} 
+0

वहाँ जबकि के मूल एक्स आदेश रखने के साथ करने के लिए एक रास्ता है:

इस मामले में चुना प्रकार एक सूची है, जो आप शब्दकोश में खाली सूचियों दे देंगे? इसके बजाय मैं यहाँ देखते हैं, और जड़ के जवाब में, कि "100, 2, 300, 4, 75" आदेश संरक्षित नहीं किया गया था। मुझे कल्पना है कि यह कुछ dict संपत्ति है। – Coolio2654

+0

@ Coolio2654: ठीक है। 'dict' कुंजी का आदेश नहीं दिया जाता है। जिस क्रम में कुंजी डाला गया की रक्षा करने के लिए, का उपयोग एक [ 'collections.OrderedDict'] (https://docs.python.org/2/library/collections.html#collections.OrderedDict): (परिवर्तन' डीसीटी = { } '->' आयात collections' 'डीसीटी = collections.OrderedDict के बाद()')। – unutbu

5

एक शब्दकोश का उपयोग करें:: इसके बजाय, एक dict का उपयोग

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': []} 
+0

मेरी पहली सोचा गया कि, तो आप सिर्फ यह करने के लिए पहले जाओ: पी –

+1

@ F3AR3DLEGEND - * मुझे लगता है कि यह करने के लिए सबसे pythonic तरीका :) – root

+0

है यह एक * शब्दकोश समझ है? :-) –

0

दूसरे के निर्देश-समाधानों में थोड़ी भिन्नता डिफ़ॉल्ट डिफॉल्ट का उपयोग करना है। यह आपको चुने गए प्रकार के डिफ़ॉल्ट मान का आह्वान करके प्रारंभिक चरण को छोड़ने की अनुमति देता है।

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