2011-04-21 3 views
29

यहां मेरा कार्य है:पायथन: एक शब्दकोश के माध्यम से Iterating मुझे "int वस्तु reererable" देता है

def printSubnetCountList(countList): 
    print type(countList) 
    for k, v in countList: 
     if value: 
      print "Subnet %d: %d" % key, value 

यहां आउटपुट है जब फ़ंक्शन को पास किए गए शब्दकोश के साथ बुलाया जाता है:

<type 'dict'> 
Traceback (most recent call last): 
    File "compareScans.py", line 81, in <module> 
    printSubnetCountList(subnetCountOld) 
    File "compareScans.py", line 70, in printSubnetCountList 
    for k, v in countList: 
TypeError: 'int' object is not iterable 

कोई विचार?

उत्तर

0

आप इस प्रकार का dict पुनरावृति नहीं कर सकते। उदाहरण देखें:

def printSubnetCountList(countList): 
    print type(countList) 
    for k in countList: 
     if countList[k]: 
      print "Subnet %d: %d" % k, countList[k] 
12

for k, v वाक्य रचना टपल unpacking अंकन का एक संक्षिप्त रूप है, और for (k, v) रूप में लिखा जा सकता है। इसका मतलब है कि पुनरावृत्त संग्रह के प्रत्येक तत्व को एक अनुक्रम होने की उम्मीद है जिसमें वास्तव में दो तत्व शामिल हैं। लेकिन शब्दकोशों पर पुनरावृत्ति केवल चाबियाँ उत्पन्न करती है, मान नहीं।

समाधान के लिए इसका इस्तेमाल या तो dict.items() या dict.iteritems() (आलसी संस्करण) है, जो वापसी की-वैल्यू tuples के अनुक्रम।

संबंधित मुद्दे