Вот два способа сделать это.
Один с sorted
и списком:
d = {2: 0.02666666666666667, 3: 0.08666666666666667, 4: 0.08666666666666667, 5: 0.0, 6: 0.04666666666666667, 7: 0.02, 8: 0.013333333333333334}
sorted_items = sorted(d.items(), key=lambda x: x[1], reverse=True)
results = [item for item in sorted_items if item[1] == sorted_items[0][1]]
# output: [(3, 0.08666666666666667), (4, 0.08666666666666667)] #
А другой с sorted
и filter
:
d = {2: 0.02666666666666667, 3: 0.08666666666666667, 4: 0.08666666666666667, 5: 0.0, 6: 0.04666666666666667, 7: 0.02, 8: 0.013333333333333334}
sorted_items = sorted(d.items(), key=lambda x: x[1], reverse=True)
results = filter(lambda x: x[1] == sorted_items[0][1], sorted_items)
# output: [(3, 0.08666666666666667), (4, 0.08666666666666667)] #
С помощью sorted
вы можете использовать key
для сортировки элементов по значениям словаря. sorted_items
даст вам:
[(3, 0.08666666666666667), (4, 0.08666666666666667), (6, 0.04666666666666667), (2, 0.02666666666666667), (7, 0.02), (8, 0.013333333333333334), (5, 0.0)]
Включая reverse
, это делает первый индекс результатов самым высоким значением.
2-я строка для получения results
- отфильтровать список, если есть несколько индексов с одинаковым максимальным значением. После этого он урезает список, и вы получите два последних значения.