我有一系列词典:
LeaderBoard = [{'Driver':'Sebastian Williams', 'Car':1, 'Team':'Red Drink','Grid':2, 'Fastest Lap':'1:37.481','Race Time':'2:27:45.958','Points':10},
{'Driver':'Tom Hamilton' ,'Car':44 ,'Team':'Mercidas' ,'Grid':6 ,'Fastest Lap':'1:37.176' ,'Race Time':'2:26:52.094' ,'Points':25 },
{'Driver':'Danny Ricardo' ,'Car':3 ,'Team':'Red Drink' ,'Grid':8 ,'Fastest Lap':'1:38.459' ,'Race Time':'2:27:38.589' ,'Points':15 },
{'Driver':'Walter Borras' ,'Car':77 ,'Team':'Lewis' ,'Grid':14 ,'Fastest Lap':'1:38.264' ,'Race Time':'2:27:22.229' ,'Points':18 },
{'Driver':'Fernando Sonal' ,'Car':14 ,'Team':'Farrori' ,'Grid':16 ,'Fastest Lap':'1:38.587' ,'Race Time':'2:27:52.040' ,'Points':8 },
{'Driver':'Jeson Smith' ,'Car':22 ,'Team':'McMilan' ,'Grid':3 ,'Fastest Lap':'1:38.284' ,'Race Time':'2:27:39.484' ,'Points':12},]
如何按照最快的比赛时间排序?
。我已经尝试了所有我能想到的东西。我使用replace
和split
来使竞赛时间成为可以轻松比较的个别数字,但我无法使循环工作。
这是用于家庭作业,我们需要使用我们学到的排序算法。
sort或sorted
不允许使用。
没有其他限制---任何排序字典数组的方法都可以。
答案 0 :(得分:1)
您可以将sorted
与key
参数一起使用。
array = sorted(array,key= lambda x: x['d'])
答案 1 :(得分:0)
由于您必须使用自己的排序代码,因此本网站上的大多数答案都无法帮助您 - 它们通常基于Python附带的sort
或sorted
函数。
您可以使用您已有的任何排序功能的轻微变体对这些词典进行排序。无论你的旧代码比较两个项目,如:
if a < b:
# swap a and b
...您将比较这些项目中包含的值:
attribute = 'Race Time'
if a[attribute] < b[attribute]:
# swap a and b
请注意,您的“比赛时间”实际上是某些奇怪格式的字符串,需要将工作转换为可比较的数字。这可能值得作为一个单独的函数编写,您的排序函数将在完全相同的位置使用:
if race_time(a) < race_time(b):
...
......甚至:
if is_faster(a, b):
...
要获得更通用的解决方案,请查找大多数语言用于通用排序的比较器功能,以及关键功能,这是现代版本中使用的更高效的变体Python (“How do I sort a list of dictionaries by values of the dictionary in Python?”,SuperBiasedMan在评论中提到,有许多使用关键功能的例子。)