Справочная информация: я хочу получать только уникальные твиты. Согласно комментариям к stackoverflow, один из способов сделать это - создать набор
Однако, когда я пробую следующий код, я получаю ошибку TypeError: Unhashable. Я нашел здесь некоторую информацию TypeError: Unhashable type. Я также знаю, что могу удалить дубликаты в MongoDB, где я храню, но будет чище, если я сделаю это перед сохранением.
Вопрос : можно ли собирать только уникальные твиты?
results = []
pages = 2
counts = 100
while True:
for tweet in tweepy.Cursor(api.search, q = keywords, since="2017-07-21", until="2017-07-27", count = counts, lang = language,monitor_rate_limit=True, wait_on_rate_limit=True).pages(pages):
results.extend(tweet)
results = set(results)
1 ответ
Без конкретного примера сложно сказать наверняка
{ ~ } » python
>>> results = ["hi", "hello", "hi", "goodbye"]
>>> a = set()
>>> for tweet in results:
... a.add(tweet)
...
>>> print a
set(['hi', 'hello', 'goodbye'])
>>>
Как вы можете видеть выше, в наборе только 1 «привет», вам не следует пытаться хешировать весь список в целом.
Хорошо, в соответствии с вашими комментариями, я провел небольшую обратную разработку, я определил, что в твитах есть текстовое поле, которое вам нужно добавить в набор,
Так что просто замените a.add(tweet)
на a.add(tweet.text)
tweepy.Cursor
, который я предоставил выше. TypeError: unhashable type: 'Status'
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.
a = set() for tweet in results: a.add(tweet)
a = set() for tweet in results: a.add(tweet)
, но получаю сообщение об ошибке: недопустимый синтаксис