Python 在输出json jable时对其进行排序

Python 在输出json jable时对其进行排序,python,json,repl.it,Python,Json,Repl.it,因此,我尝试创建一个表格系统,它可以向用户显示当前的表格、分数、游戏、固定装置等,并认为在将它们放入json文件时确定顺序可能会更容易,但在必须显示它们之前,不会对它们进行实际排序 我遇到的问题是,我不知道如何检测位置是否正确 到目前为止,我掌握的代码是: def showtbl(teams, sport, league): teamdata = teams[sport.get()][league.get()] w = Tk() Label(w, text="POS

因此,我尝试创建一个表格系统,它可以向用户显示当前的表格、分数、游戏、固定装置等,并认为在将它们放入json文件时确定顺序可能会更容易,但在必须显示它们之前,不会对它们进行实际排序

我遇到的问题是,我不知道如何检测位置是否正确

到目前为止,我掌握的代码是:

def showtbl(teams, sport, league):
  teamdata = teams[sport.get()][league.get()]
  
  w = Tk()

  Label(w, text="POS TEAM PLD W D L PF PA PD PTS").grid(row=0, column=0, columnspan=10)

  count = 1
  max = len(teamdata)

  data = []

  while count != max:
    for i in teamdata:
      print(teamdata[i])
      if teamdata[i]["pos"] == count:
        count += 1
        data.append(teamdata)
  
  print(data)
(目前我正在打印,但很快就会将其放入tkinter窗口)

数据存储如下:

{ "Sport": {
    "League": {
      "Team 1":
      {"pos": 2, "pld": 7, "won": 2, "draw": 0, "lost": 5, "pf": 92, "pa": 172, "pd": -80, "pts": 4},
      "Team 2":
      {"pos": 1, "pld": 7, "won": 5, "draw": 0, "lost": 2, "pf": 172, "pa": 92, "pd": 80, "pts": 10}
    }
  }
}
(体育和联赛已经确定,因此
teamdata=data[sport][league]

我觉得我已经接近解决方案了,但我不知道从这里到哪里才能让它发挥作用


如何在显示时对其进行排序?

您正在将
teamdata
添加到您的
data
列表中,这可能不是您想要做的。您可能想添加
teamdata[i]

此外,在while循环中使用(相对)昂贵的for循环来对
teamdata
进行排序也不是一个好主意。尝试使用排序后的
函数,如下所示:

def showtbl(团队、运动、联盟):
teamdata=团队[sport.get()][league.get()]
w=Tk()
标签(w,text=“POS TEAM PLD w D L PF PA PD PTS”).grid(行=0,列=0,列span=10)
数据=[]
对于已排序的团队(teamdata,key=lambda x:x[“pos”]):
data.append(team)#<这是一个重要的变化
打印(数据)

您可以在这里看到,我添加的是
team
,而不是
teamdata
。我正在使用
lambda
对您的
teamdata
进行排序,这是一种单行函数,它告诉排序函数应该使用
teamdata
的哪个特定部分进行排序。

您正在将
teamdata
添加到
数据
列表中,这可能不是您的本意。您可能想添加
teamdata[i]

此外,在while循环中使用(相对)昂贵的for循环来对
teamdata
进行排序也不是一个好主意。尝试使用排序后的
函数,如下所示:

def showtbl(团队、运动、联盟):
teamdata=团队[sport.get()][league.get()]
w=Tk()
标签(w,text=“POS TEAM PLD w D L PF PA PD PTS”).grid(行=0,列=0,列span=10)
数据=[]
对于已排序的团队(teamdata,key=lambda x:x[“pos”]):
data.append(team)#<这是一个重要的变化
打印(数据)
您可以在这里看到,我添加的是
team
,而不是
teamdata
。我正在使用
lambda
对您的
teamdata
进行排序,这是一种单行函数,它告诉排序函数应该使用
teamdata
的哪个特定部分进行排序