में एक निर्देश या सूची पर Iterate बस कुछ बुरा कोड लिखा है जो dict
या list
पर पाइथन में पुनरावृत्त करता है। मुझे एहसास है कि यह इसके बारे में जाने का सबसे अच्छा तरीका नहीं था।पायथन
कि आदेश में एक dict से अधिक पुनरावृति करने के लिए, इस सम्मेलन है:
for key in dict_object:
dict_object[key] = 1
लेकिन प्रमुख द्वारा वस्तु के गुण को संशोधित करता है, तो एक ही बात एक सूची पर किया जाता है काम नहीं करता:
# Throws an error because the value of key is the property value, not
# the list index:
for key in list_object:
list_object[key] = 1
तरह से मैं इस समस्या का समाधान इस बुरा कोड लिखा था:
if isinstance(obj, dict):
for key in obj:
do_loop_contents(obj, key)
elif isinstance(obj, list):
for i in xrange(0, len(obj)):
do_loop_contents(obj, i)
def do_loop_contents(obj, key):
obj[key] = 1
है वहाँ यह करने के लिए एक बेहतर तरीका है?
धन्यवाद!
बस देखा गया कि आपके पास मेरा जवाब बहुत समान है। केवल अंतर यह है कि आप 'xrange() '(जो ठीक है) का उपयोग कर रहे हैं, लेकिन नतीजा वही है या बहुत समान है।+1 – Tadeck
यदि लाइन इस्टिंस्टेंस (ओबीजे, dict) अन्य xrange (लेन (ओबीजे)) 'लाइन वापस ओबीजे नहीं होनी चाहिए? –
@tobias_k: अच्छी पकड़! पायथन का स्कोपिंग इन-लाइन संपादन को पूरा करता है। : ^) – DSM