我尝试了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()正确打印,因此可以访问第一次出现的情况
实际:我第二次出现。...
答案 0 :(得分:2)
使用OrderedDict
。它会保留插入顺序,因此您应该首先出现。