Я думаю, что понимание списка может дать мне это, но я не уверен: какие-либо изящные решения в Python (2.6) в целом для выбора уникальных объектов в списке и обеспечения количества?
(я определил __eq__
для определения уникальности в моем определении объекта).
Итак, в RDBMS-стране, что-то вроде этого:
CREATE TABLE x(n NUMBER(1));
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(2);
SELECT COUNT(*), n FROM x
GROUP BY n;
Что дает:
COUNT(*) n
==========
3 1
1 2
Итак, вот мой эквивалентный список в Python:
[1,1,1,2]
И я хочу получить тот же вывод, что и SQL SELECT, приведенный выше.
РЕДАКТИРОВАТЬ: пример, который я привел здесь, был упрощен, я на самом деле обрабатываю списки пользовательских экземпляров объектов: просто для полноты я включаю дополнительный код, который мне нужен, чтобы заставить все это работать:
import hashlib
def __hash__(self):
md5=hashlib.md5()
[md5.update(i) for i in self.my_list_of_stuff]
return int(md5.hexdigest(),16)
Метод __hash__
был необходим для того, чтобы преобразовать set
в работу (я выбрал идею понимания списка, которая работает в 2.6 [несмотря на то, что я узнал, что это связано с неэффективностью (см. Комментарии) - мои данные набор достаточно мал, чтобы это не было проблемой]). my_list_of_stuff
выше - список (строк) в моем определении объекта.