मैं १० संख्याओं के भाजक गिनने और उन्हें उनके शब्दकोश में मूल्य के रूप में जोड़ने की कोशिश कर रहा था, लेकिन जब मैं अन्य भाजक को मूल्यों की सूची में जोड़ने की कोशिश कर रहा था तो ऐसा नहीं हुआ और इसे बदल दिया गया। मुझे आश्चर्य है कि ऐसा क्यों होता है।

a = []
t = dict()
for i in range(10):
    a.append(input())
    a = [int(i) for i in a]
for num in a:
    for x in range (1, num + 1):
        if (num % x) == 0:
            t[num] = []
            t[num].append(x)
print(t)
0
ahmadre147 27 अक्टूबर 2020, 12:24

2 जवाब

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

ऐसा इसलिए है क्योंकि आप t[num] को फिर से शुरू करते हैं, जब आपको यह नहीं करना चाहिए:

a = []
t = dict()
for i in range(10):
    a.append(input())
    a = [int(i) for i in a]
for num in a:
    for x in range (1, num + 1):
        if (num % x) == 0:
            if num not in t:  # Here: init t[num] to [] only if it does not yet exist
                t[num] = []
            t[num].append(x)

print(t)
1
vinzee 27 अक्टूबर 2020, 12:38

defaultdict यहां आपके जीवन को आसान बना सकता है क्योंकि यह ध्यान रखेगा यदि सूची आवंटन।

from collections import defaultdict

a = []
t = defaultdict(list)
for i in range(10):
    a.append(input())
    a = [int(i) for i in a]
for num in a:
    for x in range (1, num + 1):
        if (num % x) == 0:
            t[num].append(x)
print(t)
1
balderman 27 अक्टूबर 2020, 12:44