Steven Bethard wrote:
So, I have a list of lists, where the items in each sublist are of basically the same form. It looks something like:

...

Can anyone see a simpler way of doing this?

Steve

You just make these up to keep us amused, don't you? ;-)

If you don't need to preserve the ordering, would the following work?:

 >>> data = [[('a', 0),
 ...          ('b', 1),
 ...          ('c', 2)],
 ...
 ...         [('d', 2),
 ...          ('e', 0)],
 ...
 ...         [('f', 0),
 ...          ('g', 2),
 ...          ('h', 1),
 ...          ('i', 0),
 ...          ('j', 0)]]
 ...
 >>> def resample2(data):
 ...     bag = {}
 ...     random.shuffle(data)
 ...     return [[(item, label)
 ...                 for item, label in group
 ...                     if bag.setdefault(label,[]).append(item)
 ...                         or len(bag[label]) < 3]
 ...                            for group in data if not random.shuffle(group)]
 ...
 >>> resample2(data)
[[('a', 0), ('c', 2), ('b', 1)], [('h', 1), ('g', 2), ('i', 0)], []]
 >>> resample2(data)
[[('h', 1), ('f', 0), ('j', 0), ('g', 2)], [('b', 1), ('c', 2)], []]
 >>> resample2(data)
[[('e', 0), ('d', 2)], [('i', 0), ('h', 1), ('g', 2)], [('b', 1)]]
 >>>

Michael

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to