probabilities = {"blue": 0.50, "gray": 0.25, "clear": 0.15, "dark": 0.10} p = 0.70 kept, mass = [], 0.0 for token, probability in sorted(probabilities.items(), key=lambda x: -x[1]): kept.append((token, probability)) mass += probability if mass >= p: break print("Greedy:", max(probabilities, key=probabilities.get)) print("Top-p:", [(t, round(v/mass, 3)) for t, v in kept])