Python 按特定字典键对字典列表进行排序
我有一系列字典:Python 按特定字典键对字典列表进行排序,python,sorting,dictionary,Python,Sorting,Dictionary,我有一系列字典: 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 ,'Fastes
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
使比赛时间成为我可以轻松比较的单个数字,但我无法使循环正常工作
这是家庭作业,我们需要使用我们所学的排序算法。不允许使用Python的排序
或排序
没有其他限制---任何对字典数组进行排序的方法都可以。您可以使用
键参数进行排序
array = sorted(array,key= lambda x: x['d'])
由于您必须使用自己的排序代码,本网站上的大多数答案对您没有帮助——它们通常基于Python附带的sort
或sorted
函数
您可以使用已有的排序函数的一个微小变体对这些词典进行排序。无论您的旧代码在何处比较以下两项:
if a < b:
# swap a and b
要获得更通用的解决方案,请查找大多数语言用于通用排序的比较函数,以及关键函数,后者是Python现代版本中使用的一种更有效的变体。(“”,SuperBiasedMan在评论中提到,有许多使用关键函数的示例。)使用array[0]['d']>array[1]['d'].
Hi,阅读了解有关在SO中提问的更多信息。您希望输出是什么?字典不是有序的数据结构,因此对其内容进行排序毫无意义。可能是每个唯一密钥的列表?还有什么?请你的问题包括老师对这项作业的所有限制。在评论中玩“猜规格”对任何人都没有乐趣。这是不允许的。这是为了学校作业,我们需要使用我们学过的排序算法。好吧,那样的话,我想你必须自己解决它。。。
attribute = 'Race Time'
if a[attribute] < b[attribute]:
# swap a and b
if race_time(a) < race_time(b):
...
if is_faster(a, b):
...