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.
Vous devez vous connecter pour publier un commentaire.
Semble simple pour moi.
Initialisé ici:
qui vient d'ici:
Qui vient d'ici:
Donc c'est un float. Et vous ne pouvez pas ajouter à un flotteur,de sorte que vous obtenez cette erreur.
Je pense que vous avez probablement voulais faire une liste de ces DHP de:
Sinon, vous pouvez regarder dans
defaultdict
:et vous pouvez déposer le
if-stmt
-- le code fait une liste si on n'en est pas une et toujours ajoute.Et je voudrais aussi regarder dans l'aide de
csv
bibliothèque pour la manipulation de votre onglet fichier séparé.Voici ce que j'imaginais, que vous devez modifier votre code pour:
Pas que j'ai fait exécuter ce ou quoi que ce soit. Laissez-moi savoir si vous rencontrez toujours des problèmes avec
defaultdict
.