मेरे पास एक सूची y=[0,2,1,2,1,1,2,1] है और इसमें 8 तत्व हैं (0 से 7 तक)।

और चूंकि इसमें तीन अद्वितीय तत्व हैं, इसलिए तीन सेट बनाए जाएंगे। मैं चाहता हूं कि आउटपुट

s1={0}
s2={1,3,6}
s3={2,4,5,7}
-3
aizan zafar 30 मार्च 2018, 10:42

3 जवाब

सबसे बढ़िया उत्तर

अगर मैं सही ढंग से समझ गया, तो आप अपनी सूची में प्रत्येक अद्वितीय मान के लिए एक सेट प्राप्त करना चाहते हैं जो सूची में इस मान की सभी घटनाओं की अनुक्रमणिका लौटाएगा।

हम यह नहीं बता सकते कि हमें कितने सेटों की आवश्यकता होगी, इसलिए हमें प्रत्येक अद्वितीय मान के लिए एक नया सेट बनाना चाहिए और इन सेटों को एक सूची में रखना चाहिए।

y = [0,2,1,2,1,1,2,1]

y_set = set(y)

set_list = []

for unique_value in y_set:
    new_set = set()
    for i, value in enumerate(y):
        if unique_value == value:
            new_set.add(i)
    set_list.append(new_set)

यह वह परिणाम है जो आप इस दृष्टिकोण से प्राप्त करेंगे:

[{0}, {2, 4, 5, 7}, {1, 3, 6}]
0
Epion 30 मार्च 2018, 08:24

आप enumerate और defaultdict का उपयोग कर सकते हैं:

from collections import defaultdict

my_dict = defaultdict(list)

for index, element in enumerate(y):
    my_dict[element].append(index)

result = my_dict.values()
0
stamaimer 30 मार्च 2018, 08:31

मुझे लगता है कि मूल्य को कुंजी के रूप में उपयोग करना बेहतर है, यह आगे के चरणों के लिए और अधिक स्पष्ट है।

y=[0,2,1,2,1,1,2,1]
dict = {}
for i, x in enumerate(y):
    if x not in dict.keys():
        dict[x] = [i]
    else:
        dict[x].append(i)
print dict

{0: [0], 1: [2, 4, 5, 7], 2: [1, 3, 6]}

और यदि आप बताए गए अनुसार बिल्कुल आउटपुट प्राप्त करना पसंद करते हैं -

from collections import OrderedDict
y= [0, 2, 1, 2, 1, 1, 2, 1]
dict2 = OrderedDict()
dict_seq = OrderedDict()
sequence = 1
list = []
for i, x in enumerate(y):
    if x not in dict2.keys():
        dict2[x] = [i]
        dict_seq['S{0}'.format(sequence)] = dict2[x]
        sequence+=1
    else:
        dict2[x].append(i)
print("dict2 = {0}".format(dict2))
for key, value in dict_seq.items():
    print("{0} = {1}\n".format(key, value))

Dict2 = OrderedDict([(0, [0]), (2, [1, 3, 6]), (1, [2, 4, 5, 7])])

एस1 = [0]

एस२ = [१, ३, ६]

एस३ = [२, ४, ५, ७]

0
elulue 30 मार्च 2018, 09:04