AttributeError: obiectul ‘dict’ nu are atributul ‘iteritems’ [duplicat] (Programare, Python, Json, Iteritems)

Victor a intrebat.

Întrebare: Primesc o eroare în timp ce execut codul de mai jos . Sunt nou în acest domeniu și nu știu cum să rezolv problema. creae funcția de atribuire a fiecărui punct de coordonate la borna sa.

    def find_borough(lat,lon):
        """
        return the borough of a location given its latitude and longitude
        lat: float, latitude
        lon: float, longitude
        """
        boro = 0 # initialize borough as 0
        for k,v in boros.iteritems(): # update boro to the right key corresponding to the parent polygon
            if v['polygon'].contains(Point(lon,lat)):
                boro = k
                break # break the loop once the borough is found
        return [boro]

## Analyse the cluster now
# create data frame of boroughs
    df = data1[data1.Trip_duration>=1350]
    orig_dest = []
    for v in df[['Pickup_latitude','Pickup_longitude','Dropoff_latitude','Dropoff_longitude']].values:
        orig_dest.append((find_borough(v[0],v[1])[0],find_borough(v[2],v[3])[0]))
    df2 = pd.DataFrame(orig_dest)



        ---------------------------------------------------------------------------
        AttributeError                            Traceback (most recent call last)
        <ipython-input-92-6a4861346be4> in <module>()
             35 orig_dest = []
             36 for v in df[['Pickup_latitude','Pickup_longitude','Dropoff_latitude','Dropoff_longitude']].values:
        ---> 37     orig_dest.append((find_borough(v[0],v[1])[0],find_borough(v[2],v[3])[0]))
             38 df2 = pd.DataFrame(orig_dest)
             39 

        <ipython-input-92-6a4861346be4> in find_borough(lat, lon)
             24     """
             25     boro = 0 # initialize borough as 0
        ---> 26     for k,v in boros.iteritems(): # update boro to the right key corresponding to the parent polygon
             27         if v['polygon'].contains(Point(lon,lat)):
             28             boro = k

        AttributeError: 'dict' object has no attribute 'iteritems'

Comentarii

  • Încercați să utilizați o metodă Python 2 pe Python 3. –  > Por user2357112 sprijină Monica.
  • use boros.items() în loc de –  > Por Sriram Sitharaman.
  • Mulțumesc, Sriram. A funcționat! –  > Por Victor.
  • Întrebat înainte: stackoverflow.com/questions/30418481/… –  > Por Peter Teoh.
1 răspunsuri
jmd_dk

În Python 3, dict.iteritems a fost redenumit în dict.items. Ar trebui să faci această redenumire și în codul tău. În Python 2, dict.items funcționează și el, deși acesta va returna o listă de elemente, în timp ce dict.iteritems în Python 2 (și dict.items în Python 3) returnează un generator, permițând o buclă cu memorie redusă asupra elementelor.