Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Manipulating sets from the 2.4 C API?

Reply
Thread Tools

Manipulating sets from the 2.4 C API?

 
 
Dave Opstad
Guest
Posts: n/a
 
      04-11-2006
I just looked through the Python/C API reference for 2.4.3 and didn't
see anything about using sets. I'd been expecting things like PySet_New,
PySet_Check etc.

If I want to handle sets should I just use a dictionary's keys and
ignore the values, or is there some more explicit set support somewhere
I'm not seeing?

Thanks,
Dave Opstad
 
Reply With Quote
 
 
 
 
Jack Diederich
Guest
Posts: n/a
 
      04-11-2006
On Tue, Apr 11, 2006 at 09:29:10AM -0700, Dave Opstad wrote:
> I just looked through the Python/C API reference for 2.4.3 and didn't
> see anything about using sets. I'd been expecting things like PySet_New,
> PySet_Check etc.


There is a public C API starting in 2.5, the progression for sets was
pure-python in 2.3, C in 2.4, and polished in 2.5 after it was better
understood how people use them. If Hettinger is around he'll correct me
if that explanation is off.

> If I want to handle sets should I just use a dictionary's keys and
> ignore the values, or is there some more explicit set support somewhere
> I'm not seeing?


There are people that use sets from C-code but I don't know if they use
the slotted methods, the 2.5 version, or a special build.

-Jack
 
Reply With Quote
 
 
 
 
=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=
Guest
Posts: n/a
 
      04-11-2006
Dave Opstad wrote:
> If I want to handle sets should I just use a dictionary's keys and
> ignore the values, or is there some more explicit set support somewhere
> I'm not seeing?


Indeed, there is. To create a new set, do

PyObject_Call(PySet_Type, "");

To, say, invoke the add method, do

PyObject_CallMethod(s, "add", "O", o);

HTH,
Martin
 
Reply With Quote
 
Felipe Almeida Lessa
Guest
Posts: n/a
 
      04-11-2006
Em Ter, 2006-04-11 *s 18:55 +0200, "Martin v. Löwis" escreveu:
> Dave Opstad wrote:
> > If I want to handle sets should I just use a dictionary's keys and
> > ignore the values, or is there some more explicit set support somewhere
> > I'm not seeing?

>
> Indeed, there is. To create a new set, do
>
> PyObject_Call(PySet_Type, "");
>
> To, say, invoke the add method, do
>
> PyObject_CallMethod(s, "add", "O", o);


I don't know much about the C API, but I'll ask anyway: the methods,
say, PySet, would be included for clarity/brevity or for performance
reasons?

--
Felipe.

 
Reply With Quote
 
Raymond Hettinger
Guest
Posts: n/a
 
      04-11-2006
Dave Opstad wrote:
> I just looked through the Python/C API reference for 2.4.3 and didn't
> see anything about using sets. I'd been expecting things like PySet_New,
> PySet_Check etc.


In Py2.4, there was not a custom set C API because the module was still
ungoing significant development. For 2.4, the best way to access sets
from C is to use the abstract API:

s=PyObject_CallObject(PySet_Type, NULL) // s=set()
PyObject_TypeCheck(o, &PySet_Type) // isinstance(o, set)
PyObject_GetIter(s) // iter(s)
PyObject_Hash(f) // hash of frozenset
PyObject_Length(s) // len(s)
PyNumber_Subtract(s,t) // s - t
PyObject_CallMethod(s, "pop", NULL) // s.pop()


> If I want to handle sets should I just use a dictionary's keys and
> ignore the values, or is there some more explicit set support somewhere
> I'm not seeing?


In Py2.4, set objects are based on dictionaries so the performance is
about the same, so the only advantage of using set objects instead of
dictionaries is that they provide methods like union, intersection, etc
which are not defined for dictionaries.

In Py2.5, set objects are no longer based on dictionaries and tend to
have better speed/space performance than equivalent dictionary code.
There is also a more full-blown C API including PySet_New(),
PySet_Size(), PySet_Add(), PySet_Contains(), ...

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Manipulating control in one frame from another frame, how? Sren M. Olesen ASP .Net 0 11-13-2003 05:37 PM
Manipulating with the T1, T0 and TX in a SAIF file. Kelvin Tsai @ Singapore VHDL 0 09-09-2003 01:46 AM
Manipulating HashTables Andrew Sweetman ASP .Net 2 08-22-2003 10:32 PM
manipulating an image file in asp.net with C# Will ASP .Net 2 08-11-2003 12:46 AM
Manipulating a User Control from another User Control Tom Rowton ASP .Net 2 08-01-2003 08:18 PM



Advertisments