diff --git a/io_scene_obj/export_obj.py b/io_scene_obj/export_obj.py
index e57d852c28fb8285bb6c9aade081cc8ffdbf4053..21e20db61c099ba81f205d159b9471e1980287ab 100644
--- a/io_scene_obj/export_obj.py
+++ b/io_scene_obj/export_obj.py
@@ -447,23 +447,25 @@ def write_file(filepath, objects, scene,
                 # in case removing some of these dont get defined.
                 uv = uvkey = uv_dict = f_index = uv_index = None
 
-                uv_face_mapping = [[0] * a[0].loop_total for i, a in enumerate(face_index_pairs)]
+                uv_face_mapping = [None] * len(face_index_pairs)
 
                 uv_dict = {}  # could use a set() here
                 for f, f_index in face_index_pairs:
+                    uv_ls = uv_face_mapping[f_index] = []
                     for uv_index, l_index in enumerate(f.loop_indices):
                         uv = uv_layer[l_index].uv
 
                         uvkey = veckey2d(uv)
                         try:
-                            uv_face_mapping[f_index][uv_index] = uv_dict[uvkey]
+                            uv_k = uv_dict[uvkey]
                         except:
-                            uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] = len(uv_dict)
+                            uv_k = uv_dict[uvkey] = len(uv_dict)
                             fw('vt %.6f %.6f\n' % uv[:])
+                        uv_ls.append(uv_k)
 
                 uv_unique_count = len(uv_dict)
 
-                del uv, uvkey, uv_dict, f_index, uv_index
+                del uv, uvkey, uv_dict, f_index, uv_index, uv_ls, uv_k
                 # Only need uv_unique_count and uv_face_mapping
 
             # NORMAL, Smooth/Non smoothed.