Dicts should be iterated by its keys (__iter__).

This commit is contained in:
Dave Halter
2015-11-28 16:08:38 +01:00
parent 09f7930104
commit 9259a432b7
2 changed files with 12 additions and 6 deletions
+7 -6
View File
@@ -307,8 +307,13 @@ class Array(IterableWrapper, ArrayMixin):
While values returns the possible values for any array field, this While values returns the possible values for any array field, this
function returns the value for a certain index. function returns the value for a certain index.
""" """
values = self._values() if self.type == 'dict':
for value in values: # Get keys.
iterate = set(k for k, v in self._items())
else:
iterate = self._items()
for value in iterate:
yield self._evaluator.eval_element(value) yield self._evaluator.eval_element(value)
def _values(self): def _values(self):
@@ -480,10 +485,6 @@ def py__iter__(evaluator, types):
yield result yield result
def py__iter__types(evaluator, types):
return unite(py__iter__(evaluator, types))
def get_iterator_types(evaluator, element): def get_iterator_types(evaluator, element):
"""Returns the types of any iterator (arrays, yields, __iter__, etc).""" """Returns the types of any iterator (arrays, yields, __iter__, etc)."""
iterators = [] iterators = []
+5
View File
@@ -234,6 +234,11 @@ dic = {str(key): ''}
#? str() #? str()
dic[''] dic['']
for x in {1: 3.0, '': 1j}:
#? int() str()
x
# ----------------- # -----------------
# with variable as index # with variable as index
# ----------------- # -----------------