#python #json #sorting #tweepy
#python #json #сортировка #tweepy
Вопрос:
Я пытаюсь создать программу, которая возвращает две самые популярные темы с количеством твитов, отправленных из указанного местоположения в Twitter. Что я могу сделать через их API, но у меня возникают проблемы с работой с данными JSON, возвращаемыми API. Я новичок в области кодирования, и я гуглю большую часть своих материалов. Я действительно не знаю, есть ли более простой способ извлечь информацию из данных JSON, я немного погуглил, но мне не удалось с этим справиться.
Я увеличил приведенный ниже код, и я могу распечатать хэштег и количество твитов, но я не знаю, как я могу отсортировать их в порядке убывания. Кто-нибудь может мне помочь? Я попробовал функцию сортировки, но она сортирует только количество твитов сама по себе, поэтому, если было отправлено 54958 твитов, она сортирует их в 45589. Мне не удалось сравнить отправленные твиты с самими собой.
В прошлый раз я не смог подробно ответить на свой вопрос, и мне было запрещено задавать вопросы на два дня, поэтому, если я снова допущу какие-либо ошибки, пожалуйста, поделитесь со мной, спасибо!
import tweepy
import json
import time
from private import consumer_key,consumer_secret
def hashtag():
auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)
api = tweepy.API(auth)
hashtag = api.trends_place(23424969)
h_json = json.dumps(hashtag)
h_dict = json.loads(h_json)
h_trends = h_dict[0]
h_trends2 = h_trends['trends']
h_sondict = h_trends2[0:]
for tweet in (h_sondict):
i = 1
a = '{}'.format(tweet['name'])
b = '{}'.format(tweet['tweet_volume'])
c = []
c.append(a)
c = c[0]
d = []
d.append(b)
print(c,d)
hashtag()
Который возвращает это;
#SahipsizElazığ ['10822']
#iyikidoğdunSefaReis ['None']
#MenajerimiAra ['None']
#ileri3lü ['None']
#BuGeceSirenlerSaat21 ['32657']
selahattin demirtaş ['None']
Etİtlafına FurkanBahanesi ['None']
KHKZulmü YeterArtık ['34557']
Hasic ['None']
Sergen ['None']
Türkçeyi ['None']
Çağatay Ulusoy ['None']
Prof. Dr. Arif Ersoy ['None']
AhlaksızOyun Bozuldu ['None']
Nsakala ['None']
TEKDER32 Yaşında ['None']
Rıdvan ['None']
SMAlılara BağışYap ['21992']
Welinton ['None']
Mensah ['None']
Rehabilitasyona Sahipçık ['None']
AYMSiyasiDeğil BağımsızKarar ['21637']
Yasin Börü ['None']
Osmanlıca ['None']
Johansen ['None']
ÖğrtmnMüjde Bekliyor ['76120']
Necip ['None']
Lens ['39612']
Zeki Yavru ['None']
#masterchefturkiye ['11174']
#umutaksututuklansın ['15529']
#UzaktanEğitim ['None']
#Şereftir2Eylül ['None']
#reisleşahlanmayadevam ['19021']
#TekeTek ['12866']
#DüşYakamızdanParaAvcısı ['None']
#HekimoğluYeniSezon ['None']
#27Kadın ['16998']
#SiyahKuğu ['None']
#CnnTürkMasası ['None']
#ilaydayasesol ['None']
#DünyaGümüşhanelilerGünü ['None']
#AyşeKocaBabasınıGörmeli ['29864']
#ReisBizimSoyluBizim ['None']
#Eylulgeldi ['None']
#yunuscansuveoğlubulunsun ['13074']
#ZiyaNolduk ['99630']
#BJKvSİV ['None']
#nevükararınıaçıkla ['None']
#eskisehirhibritistiyor ['10720']
Ответ №1:
Вам нужно быть осторожным при инициализации нового списка в цикле for, это не сохраняет переменные, которые вы используете, для использования снаружи. Я не уверен, что вы хотите делать со списками c
и d
, но вам нужно объявить их вне вашего цикла for.
Для сортировки данных, предполагая, что у вас есть список, вы можете сделать что-то вроде этого: sorted([('a', 1),('b', 3),('d', 4), ('x',12)], key=lambda x: x[1])
который отсортирует значения в порядке возрастания.
Я позволю вам разобраться с реализацией того, как это сделать.
Комментарии:
1. Я поиграю и посмотрю, что я могу сделать. Когда я объявляю их вне моего цикла, он выводит только 1 строку. Как я уже сказал, я просто повозлюсь с кодом и посмотрю сам, ха-ха, спасибо!