Вызывает ли проблема превращение списка в набор, а затем обратно в Python? - PullRequest
5 голосов
/ 27 февраля 2010

Я превращаю список в набор в Python, вот так:

request.session['vote_set'] = set(request.session['vote_set'])

Так что я могу легко выполнить поиск if x in set и устранить дубликаты. Затем, когда я закончу, я переконвертирую это:

request.session['vote_set'] = list(request.session['vote_set'])

Есть ли лучший способ сделать это? Возможно, я делаю что-то опасное (или глупое)?

Ответы [ 3 ]

5 голосов
/ 27 февраля 2010

Вы потеряете дубликаты, если действительно захотите их. Если на самом деле это список «голосов», как подсказывает ваше наименование, вы «потеряете» некоторые из них:

почему бы просто:

if x in set(request.session['vote_set'])

если вы волнуетесь.

Хотя мне интересно, будет ли это медленнее, чем просто:

if x in request.session['vote_set']

А порядок, как уже упоминали другие, потенциально (скорее всего) будет потерян.

1 голос
/ 27 февраля 2010

Вы потеряете порядок, если это важно для вас.

0 голосов
/ 27 февраля 2010

Вот как вы удаляете дубликаты И поддерживаете порядок (если вам нужно): Алгоритм - Как эффективно удалить дубликаты элементов в списке?

Другие ответы показали, как превратить список в набор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...