Как мне отсортировать в порядке возрастания / убывания эти плохо проанализированные данные JSON, возвращаемые tweepy в Python?

#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 строку. Как я уже сказал, я просто повозлюсь с кодом и посмотрю сам, ха-ха, спасибо!