我正在尝试2个小时来获得具有特定值的键值对的第一次出现。 (元组是键,值是整数)。
为什么这有关系? dict按键排序。
我可以打印()dict,我看到第一次出现是我想要的 - 但是迭代dict并使用itemgetter输出错误的元组输出第一次出现。
可运行的代码在这里: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()正确打印它
实际:我第二次出现......
使用OrderedDict
。它保留了插入顺序,因此您应该第一次出现。