擅长:python、mysql、java
<p>你有两个选择。两个选项都以线性时间运行,<code>O(nlog(n))</code>,但是您可以考虑一个更可读的选项。可以使用复合排序键:</p>
<pre><code>def sortkey(salesrecord):
r = salesrecord
return (
-r.dollarsSpent,
-r.itemsPurchased + r.itemsSold,
-r.itemsPurchased,
r.position
)
sorted(salesdict.values(), key=sortkey)
</code></pre>
<p>或多次排序,取决于排序算法的稳定性:</p>
<pre><code>l = salesdict.values()
l.sort(key=lambda r: r.position)
l.sort(key=lambda r: r.itemsPurchased, reverse=True)
l.sort(key=lambda r: r.itemsPurchased - r.itemsSold, reverse=True)
l.sort(key=lambda r: r.dollarsSpent, reverse=True)
</code></pre>
<p>按优先级从^到^的不同键排序。在按高优先级键排序后,按该键比较相等的项将保证保持在低优先级键排序后的顺序。你知道吗</p>