cf.Field.construct¶
-
Field.construct(*identity, default=ValueError(), key=False, item=False, **filter_kwargs)[source]¶ Return a metadata construct.
If zero or two or more constructs are selected then an exception is raised, or the default parameter is returned.
New in version (cfdm): 1.7.0
See also
constructs,del_construct,get_construct,has_construct,set_construct- Parameters
- identity: optional
Select constructs that have an identity, defined by their
identitiesmethods, that matches any of the given values.Additionally, the values are matched against construct identifiers, with or without the
'key%'prefix.If no values are provided then all constructs are selected.
A value may be any object that can match via the
==operator, or are.Patternobject that matches via itssearchmethod.Note that in the output of a
dumpmethod orprintcall, a construct is always described by an identity that will select it.- default: optional
Return the value of the default parameter if there is no unique construct.
If set to an
Exceptioninstance then it will be raised instead.- key:
bool, optional If True then return the selected construct identifier. By default the construct itself is returned.
New in version (cfdm): 1.10.0.0
- item:
bool, optional If True then return the selected construct identifier and the construct itself. By default the construct itself is returned. If key is True then item is ignored.
New in version (cfdm): 1.10.0.0
- filter_kwargs: optional
Keyword arguments as accepted by
Constructs.filterthat define additional construct selection criteria.New in version (cfdm): 1.8.9.0
- Returns
The selected construct, or its identifier if key is True, or a tuple of both if item is True.
Examples
>>> f = cf.example_field(0)
Select the construct that has the “standard_name” property of ‘latitude’:
>>> print(f.constructs.filter_by_property(standard_name=None)) Constructs: {'dimensioncoordinate0': <CF DimensionCoordinate: latitude(5) degrees_north>, 'dimensioncoordinate1': <CF DimensionCoordinate: longitude(8) degrees_east>, 'dimensioncoordinate2': <CF DimensionCoordinate: long_name=time(1) days since 2018-12-01 >} >>> f.construct('latitude') <CF DimensionCoordinate: latitude(5) degrees_north>
Attempt to select a unique construct whose “standard_name” start with the letter ‘l’:
>>> import re >>> f.construct(re.compile('^l')) Traceback ... ValueError: Field.construct() can't return 2 constructs >>> f.construct(re.compile('^l'), default='no unique construct') 'no unique construct'