擅长:python、mysql、java
<p>为什么排序后要转换为<code>dict</code>?<code>sort_atomicNumber = dict(sorted(...))</code>导致数据再次被取消排序。你知道吗</p>
<p>您可以改用<code>collection.OrderedDict</code>:</p>
<pre><code>import collections
data = {
'Rubidium(Rb)': 37,
'Lithium(Li)': 2,
'Argon(Ar)': 18,
'Sodium(Na)': 11,
'Potassium(K)': 19,
'Hydrogen(H)': 1,
}
sorted_by_key = collections.OrderedDict(
sorted(data.items()))
print(sorted_by_key)
sorted_by_val = collections.OrderedDict(
sorted(data.items(), key=lambda x: x[1]))
print(sorted_by_val)
</code></pre>
<p>输出为</p>
<pre><code>OrderedDict([('Argon(Ar)', 18), ('Hydrogen(H)', 1), ('Lithium(Li)', 2), ('Potassium(K)', 19), ('Rubidium(Rb)', 37), ('Sodium(Na)', 11)])
OrderedDict([('Hydrogen(H)', 1), ('Lithium(Li)', 2), ('Sodium(Na)', 11), ('Argon(Ar)', 18), ('Potassium(K)', 19), ('Rubidium(Rb)', 37)])
</code></pre>
<p>当您希望按键排序时,不需要对<code>key=lambda...</code>使用<code>sorted()</code>,因为<code>dict.items()</code>返回的数据已经包含前面的键。你知道吗</p>