Multiple value inputs

Many geoprocessing tools have input parameters that accept multiple values. Any parameter that is a multivalue (accepts multiple values of a data type) or a Value Table (a parameter data type that combines two or more data types in a table-like structure) accepts multiple values.

Multivalue and Value Table parameters can be specified as follows:

  • A list—Values are an element in a list.
  • A string—Values are separated by semicolons.
  • A ValueTable object—Values are stored in a virtual table of rows and columns.

In a tool's reference page, on the Python tab, multivalue and Value Table parameters will show a representation in square brackets ([]) below the parameter name. For example, the Delete Field tool has a multivalue field parameter and the parameter usage shows [drop_field, ...]. The Union tool has a Value Table parameter that accepts input datasets along with a rank value. Its parameter usage displays as [[in_features, {rank}], ...].

As a list

In Python, multivalue and Value Table parameters can be expressed as a list. A list is enclosed in brackets and is a flexible Python type.

The DeleteField function using a list for the drop_field parameter.

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.management.DeleteField('roads', ['STREET_NAM', 'LABEL', 'CLASS'])

The Union function using a list for the Value Table in_features parameter.

import arcpy

arcpy.env.workspace = 'C:/base/data/gdb' 
arcpy.analysis.Union([['counties', 2],['parcels', 1]], 'state_landinfo')

As a string

Multivalue and Value Table parameters can be expressed as a string. In a multivalue parameter, the values are delimited by a semicolon. In a Value Table parameter, each row is delimited with a semicolon and values within a row are delimited with a space.

The DeleteField function using a string for the multivalue drop_field parameter.

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.management.DeleteField('roads', 'STREET_NAM;LABEL;CLASS')

The Union function using a string for the Value Table in_features parameter.

import arcpy 

arcpy.env.workspace = 'C:/base/data/gdb' 
arcpy.analysis.Union('counties 2;parcels 1', 'state_landinfo')

As a Value Table

A ValueTable allows you to organize values into a virtual table of rows and columns. You specify the number of columns when you create a value table. The default is a single column.

The DeleteField function using a ValueTable object for the multivalue drop_field parameter.

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'

value_table = arcpy.ValueTable()
value_table.addRow('STREET_NAM')
value_table.addRow('LABEL')
value_table.addRow('CLASS')

arcpy.management.DeleteField('roads', value_table)

The Union function using a ValueTable object for the Value Table in_features parameter.

import arcpy 

arcpy.env.workspace = 'C:/base/data/gdb' 

value_table = arcpy.ValueTable(2)
value_table.addRow(['counties', 2])
value_table.addRow(['parcels', 1])

arcpy.analysis.Union(value_table, 'state_landinfo')