Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排名前10的Python清单_Python_List - Fatal编程技术网

排名前10的Python清单

排名前10的Python清单,python,list,Python,List,嗨,我一直在想如何按相反的顺序对列表进行排序,而列表中只有10项。我是一个非常初学者,仍在试图弄清楚清单是如何工作的。谢谢你的帮助 scoring = {"Name": "", "WinStreak": 0} leaderboard = [] count = 0 with open("testing2.txt", "r") as fileText: for line in fileText: name = line.split()[0] winning

嗨,我一直在想如何按相反的顺序对列表进行排序,而列表中只有10项。我是一个非常初学者,仍在试图弄清楚清单是如何工作的。谢谢你的帮助

scoring = {"Name": "", "WinStreak": 0}
leaderboard = []
count = 0

with open("testing2.txt", "r") as fileText:
    for line in fileText:
        name = line.split()[0]
        winning = int(line.split()[2])
        leaderboard.append({"Name": name, "WinStreak": winning})

for display in leaderboard:
    print(display["Name"], "-", display["WinStreak"])
testing2.txt

实际产量

预期产量


我认为您正在寻找类似于:

for display in sorted(leaderboard, key=lambda x: x['WinStreak'], reverse=True)[:10]:
    print(display["Name"], "-", display["WinStreak"])
要分解这一点:

  • sorted
    按升序对列表进行排序。
    参数描述了每个列表项的排序依据。在这种情况下,我们希望按照每个玩家的
    WinStreak
    值进行排序<代码>反向将排序更改为降序
  • [:10]
    将结果分割为前10个元素

您希望根据值对字典进行排序。为此,您可以简单地使用-

leaderboard = sorted(leaderboard, key=lambda itm: itm["WinStreak"], reverse = True)
下面是上述函数的工作原理-
  • sorted()
  • 在key参数中,我们传递一个lambda函数,该函数将从排行榜中的每个键值对返回值(itm[“WinStreak”])
  • reverse=True
    将按降序对其排序(默认情况下为升序)
因此,此语句将根据它们所持有的值按降序对排行榜进行排序。使用此语句后,您只需按原样打印即可-

for display in leaderboard:
    print(display["Name"], "-", display["WinStreak"])
这将为您提供所需的输出。希望这有帮助

它给我一个错误,声明“AttributeError:'list'对象没有属性'items'”
for display in sorted(leaderboard, key=lambda x: x['WinStreak'], reverse=True)[:10]:
    print(display["Name"], "-", display["WinStreak"])
leaderboard = sorted(leaderboard, key=lambda itm: itm["WinStreak"], reverse = True)
for display in leaderboard:
    print(display["Name"], "-", display["WinStreak"])