diff --git a/pyomo/core/base/indexed_component.py b/pyomo/core/base/indexed_component.py index f38a968e714..0803e8e7c0b 100644 --- a/pyomo/core/base/indexed_component.py +++ b/pyomo/core/base/indexed_component.py @@ -360,15 +360,17 @@ def iteritems(self): def keys(self): """Return an iterator of the keys in the dictionary""" - return [ x for x in self ] + return iter(self) def values(self): """Return an iterator of the component data objects in the dictionary""" - return [ self[x] for x in self ] + for s in self: + yield self[s] def items(self): """Return an iterator of (index,data) tuples from the dictionary""" - return [ (x, self[x]) for x in self ] + for s in self: + yield s, self[s] def __getitem__(self, index): """ diff --git a/pyomo/core/tests/unit/test_compare.py b/pyomo/core/tests/unit/test_compare.py index fe90f5f09cb..20131e4d17d 100644 --- a/pyomo/core/tests/unit/test_compare.py +++ b/pyomo/core/tests/unit/test_compare.py @@ -28,7 +28,7 @@ class TestConvertToPrefixNotation(unittest.TestCase): def test_linear_expression(self): m = pe.ConcreteModel() m.x = pe.Var([1, 2, 3, 4]) - e = LinearExpression(constant=3, linear_coefs=m.x.keys(), linear_vars=m.x.values()) + e = LinearExpression(constant=3, linear_coefs=list(m.x.keys()), linear_vars=list(m.x.values())) expected = [(LinearExpression, 9), 3, 1, 2, 3, 4, m.x[1], m.x[2], m.x[3], m.x[4]] pn = convert_expression_to_prefix_notation(e) self.assertEqual(pn, expected)