my_list = [{0: 0}, {1: 4.2}, {2: 3.7}, {3: 5.0}, {4: 4.0}, {5: 3.3}, {6: 4.3}, {7: 4.0}, {8: 3.9}, 0, {10: 4.0}]
我希望我的程序要做的就是浏览列表,一旦扫描整个事物,记录最高值(如键值对中的值),附加该键值对到新列表,从原始列表[my_list]中删除该密钥对值,然后再重复该过程两次。所以期望的输出看起来像这样:
desired output: [{3: 5.0},{6: 4.3},{1: 4.2}]
我不确定如何实现所需的输出。
答案 0 :(得分:0)
我假设my_list
中的单个整数是拼写错误。
使用heapq
模块获取三个最大的项目。这比排序整个列表然后提取最后三个元素稍微好一些complexity和内存效率。
>>> from heapq import nlargest
>>> my_list = [{0: 0}, {1: 4.2}, {2: 3.7}, {3: 5.0}, {4: 4.0}, {5: 3.3}, {6: 4.3}, {7: 4.0}, {8: 3.9}, {10: 4.0}]
>>> nlargest(3, my_list, key=lambda d: d.values()[0])
[{3: 5.0}, {6: 4.3}, {1: 4.2}]
key
函数指定列表中的项目的排序标准,它只是获取任何单个字典的唯一值。