2016-08-19 4 views
-1

J'ai un morceau assez simple de code qui recherche une classe d'entités polygones et stocke les données pour une sélection de champs dans une liste:SearchCursor dans arcpy De retour tuples et listes, pas une liste

for eachSMField in smFieldList: 
    with arcpy.da.SearchCursor(seamaskPGN, eachSMField) as cursor: 
     for row in cursor: 
      cfbDataList.append(row) 
     print("### cfbDataList: ") 
     print(cfbDataList) 

Le dernier ligne de code ci-dessus donne le résultat suivant:

[[(4.1,)], [(4.2,)], [(4.34,)], [(4.45,)], [(4.55,)], [(4.58,)], [(4.68,)], [(4.75,)], [(4.78,)], [(4.83,)], [(4.87,)], [(4.89,)], [(4.91,)], [(4.96,)], [(5.03,)], [(5.09,)]] 

Bien que les données sont exactes, je ne peux pas comprendre pourquoi les données sont 1) dans un tuple et 2) chaque tuple est dans leur propre liste, dans la liste plus large .

La sortie Je cherche est tout simplement les données dans une liste, par exemple .:

[4.1, 4.2, 4.34, 4.45, ...etc] 

Répondre

0

La sortie de SearchCursor est un itérateur de tuples. Vous ajoutez chaque ligne (tuple) à votre liste plutôt que les valeurs elles-mêmes. Changez votre instruction append à cfbDataList.append(row[0]) pour ajouter la valeur au lieu du tuple.

Une autre chose à vérifier est la valeur de eachSMField que vous passez dans le curseur. Ce devrait être une liste de champs ... ou, devinant à votre intention, une liste avec un nom de champ.

+0

+1 Merci pour votre réponse. 'eachSMField' stocke chaque élément de la liste' smFieldList', qui est une liste statique de noms de champs. – DonkeyKong