Python dict更改顺序-如何获得第一次出现?

Python dict更改顺序-如何获得第一次出现?,python,loops,sorting,dictionary,Python,Loops,Sorting,Dictionary,我花了2个小时试图获取具有特定值的键值对的第一个匹配项。(元组是键,值是整数) 为什么这是相关的?口述按键排序 我可以pprint()这个dict,我看到第一个出现的是我想要的-但是在dict上迭代并使用itemgetter输出第一个出现的结果是错误的元组 可运行代码如下所示: 相关的行是54到86(请注意较大的调试部分) 这将是我从pprint获取第一个事件的解决方案: print(max(allsmall.items(), key=operator.itemgetter(1))[0]) #a

我花了2个小时试图获取具有特定值的键值对的第一个匹配项。(元组是键,值是整数)

为什么这是相关的?口述按键排序

我可以pprint()这个dict,我看到第一个出现的是我想要的-但是在dict上迭代并使用itemgetter输出第一个出现的结果是错误的元组

可运行代码如下所示: 相关的行是54到86(请注意较大的调试部分)

这将是我从pprint获取第一个事件的解决方案:

print(max(allsmall.items(), key=operator.itemgetter(1))[0]) #almost minimum 
但是第二次发生了

这完全打破了秩序:

print(max(allsmall.items(), key=operator.itemgetter(0))[0]) 
应为:可以访问第一个匹配项,因为pprint()正确打印它


实际:我第二次出现……

使用
OrderedDict
。它保留了插入顺序,因此您应该获得第一个匹配项。

使用
OrderedDict
。它保留了插入顺序,因此应该第一次出现。

在Python 3.6之前,Python字典本质上是无序的(事实上,直到Python 3.7才保证这一点)。即使是这种情况,如果您依赖于字典的顺序,这意味着您可能不应该使用字典,而应该使用其他数据结构。注意,对于这种类型的东西,我不相信
pprint
的输出键是(正如在stackoverflow上有很好的文档记录和感叹的那样),ordereddict需要用元组数组填充,应该对其进行排序。它可以用任何有序的键值对填充。在Python 3.6之前,Python字典本质上是无序的(事实上,直到Python 3.7才保证这一点)。即使是这种情况,如果您依赖于字典的顺序,这意味着您可能不应该使用字典,而应该使用其他数据结构。注意,对于这种类型的东西,我不相信
pprint
的输出。键是(正如在stackoverflow上有很好的文档记录和感叹的那样),ordereddict需要用元组数组填充,元组数组应该被排序。它可以用任何有序的键值对iterable填充。键是(在stackoverflow上有很好的记录和感叹)ordereddict需要填充一个元组数组,应该进行排序。关键是(在stackoverflow上有很好的记录和感叹)ordereddict需要填充一个元组数组,应该进行排序。
print(max(allsmall.items(), key=operator.itemgetter(0))[0])