py: Check that sequence has 2 elements for dict iterable constructor.
diff --git a/py/obj.c b/py/obj.c
index 844ec41..623b396 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -280,7 +280,7 @@
             mp_obj_list_get(o, &seq_len, items);
         }
         if (seq_len != len) {
-            nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_IndexError, "requested length %d but object has length %d", len, seq_len));
+            nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError, "requested length %d but object has length %d", len, seq_len));
         }
     } else {
         nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError, "object '%s' is not a tuple or list", mp_obj_get_type_str(o)));
diff --git a/py/objdict.c b/py/objdict.c
index 4dffa53..963e188 100644
--- a/py/objdict.c
+++ b/py/objdict.c
@@ -50,9 +50,11 @@
             mp_obj_t iterable = mp_getiter(args[0]);
             mp_obj_t dict = mp_obj_new_dict(0);
             // TODO: support arbitrary seq as a pair
-            mp_obj_tuple_t *item;
+            mp_obj_t item;
             while ((item = mp_iternext(iterable)) != MP_OBJ_NULL) {
-                mp_obj_dict_store(dict, item->items[0], item->items[1]);
+                mp_obj_t *sub_items;
+                mp_obj_get_array_fixed_n(item, 2, &sub_items);
+                mp_obj_dict_store(dict, sub_items[0], sub_items[1]);
             }
             return dict;
         }