Arcpy 中的 SearchCursor 返回元组和列表,而不是列表
SearchCursor in Arcpy Returning Tuples & Lists, Not a List
我有一段相当简单的代码,用于搜索多边形要素 class 并将所选字段的数据存储在列表中:
for eachSMField in smFieldList:
with arcpy.da.SearchCursor(seamaskPGN, eachSMField) as cursor:
for row in cursor:
cfbDataList.append(row)
print("### cfbDataList: ")
print(cfbDataList)
上面最后一行代码给出了以下输出:
[[(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,)]]
虽然数据是准确的,但我无法弄清楚为什么数据是 1) 在一个元组中和 2) 每个元组在它们自己的列表中,在更广泛的列表中。
我正在寻找的输出只是列表中的数据,例如:
[4.1, 4.2, 4.34, 4.45, ...etc]
SearchCursor
的输出是元组的迭代器。您将每一行(元组)附加到您的列表而不是值本身。将您的附加语句更改为 cfbDataList.append(row[0])
以附加值而不是元组。
要检查的另一件事是要传递给游标的 eachSMField
的值。它应该是一个字段列表...或者,猜测您的意图,一个具有一个字段名称的列表。
我有一段相当简单的代码,用于搜索多边形要素 class 并将所选字段的数据存储在列表中:
for eachSMField in smFieldList:
with arcpy.da.SearchCursor(seamaskPGN, eachSMField) as cursor:
for row in cursor:
cfbDataList.append(row)
print("### cfbDataList: ")
print(cfbDataList)
上面最后一行代码给出了以下输出:
[[(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,)]]
虽然数据是准确的,但我无法弄清楚为什么数据是 1) 在一个元组中和 2) 每个元组在它们自己的列表中,在更广泛的列表中。
我正在寻找的输出只是列表中的数据,例如:
[4.1, 4.2, 4.34, 4.45, ...etc]
SearchCursor
的输出是元组的迭代器。您将每一行(元组)附加到您的列表而不是值本身。将您的附加语句更改为 cfbDataList.append(row[0])
以附加值而不是元组。
要检查的另一件事是要传递给游标的 eachSMField
的值。它应该是一个字段列表...或者,猜测您的意图,一个具有一个字段名称的列表。