擅长:python、mysql、java
<p>下面是一种方法,它首先将NY值推到顶部,同时仍按用户名作为第一个键进行排序,并将状态作为第二个键:</p>
<pre><code>{'bill': 'NY',
'frank': 'NY',
'guest': 'MN',
'user1': 'CA',
'user2': 'NY',
'user7': 'CA'}
def keyFunc(x):
if names_states[x] == 'NY':
return (False, x)
return (x, names_states[x])
sorted(names_states.iterkeys(), key=keyFunc)
# ['bill', 'frank', 'user2', 'guest', 'user1', 'user7']
</code></pre>
<p>注意:这里坚持使用<code>key</code>方法比定义自定义<code>cmp</code>函数快。对于每个项,键函数将只运行一次,而cmp函数将在每个组合中运行。</p>