AttributeError: 'float' objet n'a pas d'attribut 'append' - Python Dictionnaire

Je tente de créer un nouveau dictionnaire qui liste les espèces de l'arbre ainsi que le DHP pour cette espèce. Il y aura plusieurs DHP de chaque espèce. Il tire cette information à partir d'un fichier texte.

La partie qui crée le premier dictionnaire du travail (listes d'espèces et le nombre pour chaque), mais je n'arrive pas à ajouter le DHP de chaque espèce. J'obtiens toujours l'erreur AttributeError: 'float' objet n'a pas d'attribut 'ajouter'. J'ai cherché et cherché et essayé plusieurs façons, mais ne peut pas obtenir que cela fonctionne.

import string, os.path, os, sys


filepath = "C:\\temp\\rdu_forest1.txt"
data=[]
#Open the text file
myfile=open(filepath,'r')
#Read the text file
myfile.readline() #read the field name line
row = myfile.readline()
count = 0
while row:
    myline = row.split('\t') #Creat a list of the values in this row.  Columns are tab separated.
    #Reads a file with columns: Block Plot  Species DBH MerchHeight
    data.append([float(myline[0]),float(myline[1]),myline[2].rstrip(),float(myline[3].rstrip())]) 
    #rstrip removes white space from the right side
    count = count + 1
    row = myfile.readline()
myfile.close()
mydict={}

mydict2={} #Create an emyty mydict2 here  *********

for row in data:  # for each row
    # create or update a dictionary entry with the current count for that species
    species = row[2]#Species is the third entry in the file
    DBH = row[3] #DBH is the fourth entry in the file 
    if mydict.has_key(species):  #if a dictionary entry already exists for this species
        #Update dict for this species
        cur_entry = mydict[species]
        cur_entry = int(cur_entry)+1
        mydict[species] = cur_entry

        #update mydict2 here  *********
        mydict2[species].append(DBH)

    else:#This is the first dictionary entry for this species
        #Create new dict entry with sums and count for this species
        mydict[species]=1
        mydict2[species]=DBH #Add a new entry to mydict2 here  *********

print mydict

Ici est le TraceBack

Traceback (most recent call last):
  File "C:\Python27\ArcGIS10.1\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 326, in RunScript
    exec codeObject in __main__.__dict__
  File "E:\Python\dictionary.py", line 40, in <module>
    mydict2[species].append(DBH)
AttributeError: 'float' object has no attribute 'append'
  • Veuillez inclure le traceback. Que se montrer à la ligne exacte à laquelle l'exception est soulevée. Il sera évidemment l'une des lignes contenant .append(). Comme le msg d'erreur dit, vous découvrirez que vous êtes en train d'ajouter à un flotteur.
  • Traceback (most recent call last): File "C:\Python27\ArcGIS10.1\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", à la ligne 326, dans RunScript exec codeObject dans principal.__dict__ Fichier "E:\Python\16\dictionary.py", à la ligne 40, in <module> mydict2[espèce].append(DBH) AttributeError: 'float' objet n'a pas d'attribut 'append'
  • Donc mydict2[species] est un float. Vous attendez-vous à être un float? Vous ne pouvez pas ajouter à un flotteur.
  • Est-ce bizarre? Je n'obtiens pas d'erreur du tout.
  • C'est la valeur de mydict: {'MÉTIER': 95, 'ÊTRE': 1, 'WD': 10, 'WO': 95, 'HK': 19, 'YP': 33, 'POP': 12, 'RB': 3, 'RM': 71, 'ASH': 2, 'LP': 696, 'SLP': 1, 'VP': 1, 'SRW': 2, 'SHL': 17, 'CV': 1, 'RO': 82, 'MPL': 13, "SP": 1, "SW': 11, 'MW: 1, "SL": 21, "SG": 82} je veux mydict2 être: {'LOB': [102, 14, 203], 'ÊTRE": [212, 232]...} La première montre les espèces et le nombre d'arbres avec les espèces. La seconde montre l'espèce et le diamètre de chaque arbre de cette espèce. Peut-être il ya une meilleure façon d'obtenir ces valeurs là. Je suis totalement nouveau sur ce concept.
InformationsquelleAutor user2923636 | 2013-10-26