首页 > 解决方案 > 如何按升序/降序对 Python 中 tweepy 返回的解析不佳的 JSON 数据进行排序?

问题描述

我正在尝试为自己构建一个程序,该程序返回前两个热门主题,其中包含从 Twitter 上给定位置发送的推文数量。我可以通过他们的 API 做到这一点,但我无法处理 API 返回的 JSON 数据。我是编码领域的新手,我用谷歌搜索了我的大部分东西。我真的不知道是否有更简单的方法从 JSON 数据中提取信息,我用谷歌搜索了很多,但我没有处理它。

我编写了下面的代码,可以打印出主题标签和推文数量,但我不知道如何按降序对它们进行排序。谁能帮我?我尝试了 sorted 函数,但它只对推文本身的数量进行排序,因此如果发送了 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']

标签: pythonjsonsortingtweepy

解决方案


您需要小心在 for 循环中初始化一个新列表,它不会保存您在外部使用的变量。我不确定你想用cd列表做什么,但你需要在你的 for 循环之外声明它们。

要对数据进行排序,假设您有一个列表,您可以执行以下操作: sorted([('a', 1),('b', 3),('d', 4), ('x',12)], key=lambda x: x[1]) 它将按升序对值进行排序。

我会让你弄清楚如何做到这一点。


推荐阅读