diff --git a/kwant/builder.py b/kwant/builder.py
index 3b66ef9600802a770eaeabc3c3b90e1ef3b64026..a4ba1f52e31d5d1a6ea618bf70f641ba1e92aa77 100644
--- a/kwant/builder.py
+++ b/kwant/builder.py
@@ -15,7 +15,6 @@ import abc
 import sys
 import operator
 from itertools import izip, islice, chain
-from collections import Iterable
 import tinyarray as ta
 import numpy as np
 from . import system, graph
@@ -415,9 +414,12 @@ def for_each_in_key(key, f_site, f_hopp):
     if isinstance(key, Site):
         f_site(key)
     elif isinstance(key, tuple):
-            f_hopp(key)
-    elif isinstance(key, Iterable):
-        ikey = iter(key)
+        f_hopp(key)
+    else:
+        try:
+            ikey = iter(key)
+        except:
+            raise KeyError(key)
         try:
             first = next(ikey)
         except StopIteration: