use the stricter PyMapping_Check (closes #15801)
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index b25b17b..8b782b4 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -9504,8 +9504,7 @@
         arglen = -1;
         argidx = -2;
     }
-    if (Py_TYPE(args)->tp_as_mapping && !PyTuple_Check(args) &&
-        !PyUnicode_Check(args))
+    if (PyMapping_Check(args) && !PyTuple_Check(args) && !PyUnicode_Check(args))
         dict = args;
 
     while (--fmtcnt >= 0) {