Python排序有序字典和生成的.items()迭代器

Python排序有序字典和生成的.items()迭代器,python,sorting,ordereddictionary,Python,Sorting,Ordereddictionary,如何对订购的信息进行排序在网站的其他地方确实存在。如何做到这一点的一个例子是: foo = OrderedDict(sorted(ordered_dict.items(), key=lambda x: x[1][0])) 为了解释,我有一个OrderedDict of List,因此排序是OrderedDict键列表中的第一个条目。我将已排序的集合作为名为foo的新OrderedDict返回。太好了 但我的问题围绕foo.items()展开。如果我当时这样做: for idx, row in

如何对订购的信息进行排序在网站的其他地方确实存在。如何做到这一点的一个例子是:

foo = OrderedDict(sorted(ordered_dict.items(), key=lambda x: x[1][0]))
为了解释,我有一个OrderedDict of List,因此排序是OrderedDict键列表中的第一个条目。我将已排序的集合作为名为foo的新OrderedDict返回。太好了

但我的问题围绕foo.items()展开。如果我当时这样做:

for idx, row in foo.items():
行指定的值确实按排序顺序返回,证明上述排序有效。然而,idx变量是以疯狂的随机顺序排列的,与新OrderedDict中的位置不相关,也许是旧OrderedDict中的位置,这就是我推测的

那么,我的问题是如何得到它,使行重新排序(现在是这样),并且idx以递增的顺序一次递增1

更新

foo = list(OrderedDict(sorted(ordered_dict.items(), key=lambda x: x[1][0])).values())

for idx in range(0, len(foo)):
    row = foo[idx]

这是我想做的事情。这把钥匙对我来说与原文无关。我需要的是按dict值中包含的列表中的第一个值排序的项,然后能够说出该行在列表中的位置(供以后使用,在上面的代码段中看不到)。因此,是的,虽然输入必须是一个dict,但我不需要新的dict,我只需要一个列表。

记住,这是一个字典,而不是列表。它没有索引,它有键。排序时,相同的键对应相同的值。因此,如果从
{0:[5],1:[3]}
开始排序,则排序时将得到
{1:[3],0:[5]}
。如果您希望键只是从0到n-1(其中n是长度)的整数,那么我建议只使用列表。您可以添加一些示例数据吗?从你的问题来看,你真的不清楚你的意思。@Nathan是的,我想最后一张清单会对我有用。输入为OrderedICT,不会更改。键是垃圾,可以扔掉,它是我感兴趣的值中的列表,我只需要在迭代我的新结构时获取这个新列表的索引。我的问题有一个更新,它展示了我可以实现它的方式,让我们看看它有多干净。我只是迷路了idx是关键,因为关键恰好是0,1,2,。。。假设发生了更神奇的事情。@demongolem为什么不直接使用
foo=sorted(ordered_dict.values())
?无需创建另一个dict,也无需指定键,因为列表是按元素顺序进行比较的(除非您希望有
[1,3]