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

时间:2019-04-01 17:37:54

标签: python loops sorting dictionary

我尝试了2个小时,才第一次出现具有特定值的键值对。 (元组是键,值是整数)。

为什么这样有意义?字典按键排序。

我可以对dict进行pprint()处理,然后看到第一个匹配项是我想要的-但是迭代该dict并使用itemgetter输出第一个匹配项输出WRONG元组。

可运行的代码在这里:https://repl.it/repls/WatchfulStridentLight 相关的行是54到86(请注意较大的调试部分)

pprint([k for k,v in allsmall.items() if v>=maxb]) #HERE, the 2nd tuple IS WHAT I WANT, the correct value

这是我从pprint首次出现的首选解决方案:

print(max(allsmall.items(), key=operator.itemgetter(1))[0]) #almost minimum 

但这是第二次出现吗?!

这完全破坏了顺序:

print(max(allsmall.items(), key=operator.itemgetter(0))[0]) 

预期:由于pprint()正确打印,因此可以访问第一次出现的情况

实际:我第二次出现。...

1 个答案:

答案 0 :(得分:2)

使用OrderedDict。它会保留插入顺序,因此您应该首先出现。