Python:按值或键对字典排序,并将结果子集到前三个键值对

Python:按值或键对字典排序,并将结果子集到前三个键值对,python,list,sorting,dictionary,subset,Python,List,Sorting,Dictionary,Subset,3个问题: 有没有一种简单的方法可以让我在不导入外部包的情况下按a)键或b)值降序对字典进行排序 按值仅选择字典中前3个键值对的简单方法 按值排序字典,然后按键降序排序 问题1: 我有下面的字典“output\u dict\u s1”: 为了按值对字典排序,我使用了一个外部包。它可以工作,但我想知道如何在没有软件包的情况下工作 output_dict_sorted = dict(sorted(output_dict_s1.items(), key = operator.itemgetter(1)

3个问题:

  • 有没有一种简单的方法可以让我在不导入外部包的情况下按a)键或b)值降序对字典进行排序
  • 按值仅选择字典中前3个键值对的简单方法
  • 按值排序字典,然后按键降序排序
  • 问题1: 我有下面的字典“output\u dict\u s1”:

    为了按值对字典排序,我使用了一个外部包。它可以工作,但我想知道如何在没有软件包的情况下工作

    output_dict_sorted = dict(sorted(output_dict_s1.items(), key = operator.itemgetter(1), reverse = True))
    
    问题2: 现在,排序字典“output\u dict\u sorted”如下所示:

    {'Lewis Hamilton': 0.8461538461538461, 'Kimi Raikkonen': 0.8181818181818182, 'Sebastian Vettel': 0.6153846153846154, 'Max Verstappen': 0.5, 'Valtteri Bottas': 0.5, 'Daniel Ricciardo': 0.25, 'Sergio Perez': 0.14285714285714285, 'Fernando Alonso': 0, 'Nico Hulkenberg': 0, 'Stoffel Vandoorne': 0, 'Carlos Sainz': 0, 'Pierre Gasly': 0, 'Kevin Magnussen': 0, 'Marcus Ericsson': 0, 'Esteban Ocon': 0, 'Charles Leclerc': 0, 'Lance Stroll': 0, 'Brendon Hartley': 0, 'Romain Grosjean': 0, 'Sergey Sirotkin': 0}
    
    我想对上面的字典进行子集划分,以便只显示前三个键值对。我一直在用迂回的方式来做这件事。即,将该字典转换为元组列表,然后将该元组列表子集为前三个索引,并转换回新字典

    output_dict_top3_s3 = list(output_dict_sorted_s2.items())[0:3]
    
    for atuple in output_dict_top3_s3:
        print (atuple)
        output_dict_s4[atuple[0]] = atuple[1]
    

    有更好的方法吗?

    问题1:您不需要任何外部软件包,因为您可以使用lambda:

    output_dict_sorted = dict(sorted(output_dict_s1.items(), key=lambda x: x[1],
                              reverse=True))
    
    问题2:您可以直接将上述指令限制在前3项,因为
    排序
    返回一个列表:

    output_dict_top3 = dict(sorted(output_dict_s1.items(), key=lambda x: x[1], reverse=True)[:3])
    
    正如预期的那样:

    {'Lewis Hamilton': 0.8461538461538461,
     'Kimi Raikkonen': 0.8181818181818182,
     'Sebastian Vettel': 0.6153846153846154}
    

    问题1:您不需要任何外部包,因为您可以使用lambda:

    output_dict_sorted = dict(sorted(output_dict_s1.items(), key=lambda x: x[1],
                              reverse=True))
    
    问题2:您可以直接将上述指令限制在前3项,因为
    排序
    返回一个列表:

    output_dict_top3 = dict(sorted(output_dict_s1.items(), key=lambda x: x[1], reverse=True)[:3])
    
    正如预期的那样:

    {'Lewis Hamilton': 0.8461538461538461,
     'Kimi Raikkonen': 0.8181818181818182,
     'Sebastian Vettel': 0.6153846153846154}
    

    好的,你推荐什么?好的,你推荐什么?第三个问题呢?第三个问题呢?