<p>你的问题有点不清楚,我的理解是你有<code>{k1: {k2: [v1, v2, v3, v4]}}</code>,你想按<code>v4</code>对每个顶级条目进行排序,每个列表中的条目应该是相同的(所以我们选择哪个并不重要)。但是,子条目(<code>k2</code>)在顶级条目之间不是常量。你知道吗</p>
<p>从子条目获取v4很容易(<code>[3]</code>或<code>[-1]</code>)问题是获取第二级dict的任意值。<code>next(iter(d.values()))</code>应该做:迭代子值(列表),然后从迭代器中获取第一个值。并不是说如果子条目为空(顶级键映射到空dict),这将引发错误。你知道吗</p>
<p>所以<code>sorted(data.items(), key=lambda e: next(iter(e[1].values()))[-1])</code>应该起作用:</p>
<pre class="lang-py prettyprint-override"><code>[('16741b673a418af3812f6d43ea3f7daf',
{1: [0, '16741b673a418af3812f6d43ea3f7daf', 'data-01', 1132],
2: [1, '16741b673a418af3812f6d43ea3f7daf', 'data-02', 1132],
3: [2, '16741b673a418af3812f6d43ea3f7daf', 'data-03', 1132]}),
('a1e0f7ccdd8d38cb5ae00cdac71b6724',
{8: [0, 'a1e0f7ccdd8d38cb5ae00cdac71b6724', 'data-08', 20125],
9: [1, 'a1e0f7ccdd8d38cb5ae00cdac71b6724', 'data-09', 20125],
10: [1, 'a1e0f7ccdd8d38cb5ae00cdac71b6724', 'data-10', 20125]}),
('cbef6de99cc2b9739c824db6d0246093',
{4: [0, 'cbef6de99cc2b9739c824db6d0246093', 'data-04', 55296],
5: [1, 'cbef6de99cc2b9739c824db6d0246093', 'data-05', 55296],
6: [1, 'cbef6de99cc2b9739c824db6d0246093', 'data-06', 55296],
7: [2, 'cbef6de99cc2b9739c824db6d0246093', 'data-07', 55296]})]
</code></pre>
<p>请注意,这将返回<code>(key, value)</code>元组列表,而不是字典。您必须将其反馈给<code>dict</code>(理想情况下是OrderedDict,可能是Python3.6或更高版本中的常规<code>dict</code>),以保持顺序:</p>
<pre class="lang-py prettyprint-override"><code>{'16741b673a418af3812f6d43ea3f7daf':
{1: [0, '16741b673a418af3812f6d43ea3f7daf', 'data-01', 1132],
2: [1, '16741b673a418af3812f6d43ea3f7daf', 'data-02', 1132],
3: [2, '16741b673a418af3812f6d43ea3f7daf', 'data-03', 1132]},
'a1e0f7ccdd8d38cb5ae00cdac71b6724':
{8: [0, 'a1e0f7ccdd8d38cb5ae00cdac71b6724', 'data-08', 20125],
9: [1, 'a1e0f7ccdd8d38cb5ae00cdac71b6724', 'data-09', 20125],
10: [1, 'a1e0f7ccdd8d38cb5ae00cdac71b6724', 'data-10', 20125]},
'cbef6de99cc2b9739c824db6d0246093': {
4: [0, 'cbef6de99cc2b9739c824db6d0246093', 'data-04', 55296],
5: [1, 'cbef6de99cc2b9739c824db6d0246093', 'data-05', 55296],
6: [1, 'cbef6de99cc2b9739c824db6d0246093', 'data-06', 55296],
7: [2, 'cbef6de99cc2b9739c824db6d0246093', 'data-07', 55296]}}
</code></pre>