Patch #642500 with slight modifications: allow keyword arguments in
dict() constructor. Example:
  >>> dict(a=1, b=2)
  {'a': 1, 'b': 2}
  >>>
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index e9726cf..2eaa20c 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -1705,7 +1705,7 @@
 	{"setdefault",  (PyCFunction)dict_setdefault,   METH_VARARGS,
 	 setdefault_doc__},
 	{"pop",         (PyCFunction)dict_pop,          METH_O,
-	 pop__doc__},	
+	 pop__doc__},
 	{"popitem",	(PyCFunction)dict_popitem,	METH_NOARGS,
 	 popitem__doc__},
 	{"keys",	(PyCFunction)dict_keys,		METH_NOARGS,
@@ -1781,11 +1781,9 @@
 dict_init(PyObject *self, PyObject *args, PyObject *kwds)
 {
 	PyObject *arg = NULL;
-	static char *kwlist[] = {"items", 0};
 	int result = 0;
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:dict",
-					 kwlist, &arg))
+	if (!PyArg_ParseTuple(args, "|O:dict", &arg))
 		result = -1;
 
 	else if (arg != NULL) {
@@ -1794,6 +1792,8 @@
 		else
 			result = PyDict_MergeFromSeq2(self, arg, 1);
 	}
+	if (result == 0 && kwds != NULL)
+		result = PyDict_Merge(self, kwds, 1);
 	return result;
 }
 
@@ -1817,7 +1817,9 @@
 "dict(seq) -> new dictionary initialized as if via:\n"
 "    d = {}\n"
 "    for k, v in seq:\n"
-"        d[k] = v");
+"        d[k] = v\n"
+"dict(**kwargs) -> new dictionary initialized with the name=value pairs\n"
+"    in the keyword argument list.  For example:  dict(one=1, two=2)");
 
 PyTypeObject PyDict_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)