遍历数组并将字符串用作属性名称的正确方法?

Correct method to iterate through an array and apply string as an attribute name?

我有一个包含大量列和行的 .csv。我使用 python 读取 csv 并在 ArcGIS 中创建 table/feature class 并使用 .csv 中的行填充 table。我正在寻找以下的最佳 way/shorthand 方法:

我有一个代表 .csv“csv_headers”第一行的列表。

下面的 CSV 简短示例显示列表为:

csv_headings = ['Key', 'X', 'Y', 'Value1', 'Value2'...]

Key        X      Y       Value1    Value2    ...
2221    192934  875767     96.4      95.4
2222    194459  834763     96.3      99.9
2223    193934  905606     90.6      95.1
2224    191974  855100     91.0      95.2
...

目前以下用于填充 ArcGIS 中的 table/feature class:

with open("C:\path_to_csv.csv", 'rb') as f:
  reader = csv.DictReader(f)
  for row in reader:
    # Create the feature
    feature = cursor.newRow()

    # Add the point geometry to the feature
    vertex = arcpy.CreateObject("Point")
    vertex.X = row['X']
    vertex.Y = row['Y']
    feature.shape = vertex

    # Add attributes
    feature.Key = row['Key']
    feature.X = row['X']
    feature.Y = row['Y']
    feature.Value1 = row['Value1']
    feature.Value2 = row['Value2']

我的完整数据集有 43 列,目前全部手动编写为“feature.ValueX = 行['ValueX'] 43 行,我希望缩短。

基本上我想遍历“csv_headers”作为 x 并将 x 应用为属性名称和行标题,假设:

    # Add attributes

    for x in csv_headers:
      feature.x = row[x]

但这行不通,只是想知道解决这个问题的正确方法是什么?任何帮助将不胜感激。

简短的回答是:

for attr in csv_headings:
    setattr(feature, attr, row[attr])

并且 setattr 文档是 here