6.2.4.2.21. setdict

Comienzo python section to interscript/core/mxTools.py[22 /26 ] Siguiente Previo Primero Último
   156: #line 1787 "mxTools.pak"
   157: def setdict(sequence, value=None):
   158:   adict = {}
   159:   for key in sequence:
   160:     adict[key] = value
   161:   return adict
   162: 
End python section to interscript/core/mxTools.py[22]
Comienzo C section to interscript/core/mxTools.c[23 /30 ] Siguiente Previo Primero Último
  1535: #line 1794 "mxTools.pak"
  1536: 
  1537: Py_C_Function( mxTools_setdict,
  1538:                "setdict(seq,value=None)\n\n"
  1539:                "Creates a dictionary from the given items sequence.\n"
  1540:                "The sequence must hashable entries which are used as\n"
  1541:                "dictionary keys. The values are all set to value."
  1542:                )
  1543: {
  1544:     int n;
  1545:     PyObject *seq,*d = 0,*value = 0;
  1546:     register int i;
  1547: 
  1548:     Py_Get2Args("O|O",seq,value);
  1549:     n = PySequence_Length(seq);
  1550:     if (n < 0)
  1551:         Py_Error(PyExc_TypeError,
  1552:                  "argument must be a sequence");
  1553: 
  1554:     if (!value) {
  1555:         Py_INCREF(Py_None);
  1556:         value = Py_None;
  1557:     }
  1558:     else
  1559:         Py_INCREF(value);
  1560: 
  1561:     d = PyDict_New();
  1562:     if (!d)
  1563:         goto onError;
  1564: 
  1565:     for (i = 0; i < n; i++) {
  1566:         register PyObject *k;
  1567: 
  1568:         k = PySequence_GetItem(seq,i);
  1569:         if (!k)
  1570:             goto onError;
  1571:         if (PyDict_SetItem(d,k,value))
  1572:             goto onError;
  1573:         Py_DECREF(k);
  1574:     }
  1575: 
  1576:     Py_DECREF(value);
  1577:     return d;
  1578: 
  1579:  onError:
  1580:     Py_XDECREF(d);
  1581:     Py_XDECREF(value);
  1582:     return NULL;
  1583: }
  1584: 
End C section to interscript/core/mxTools.c[23]