Диктофон Python меняет порядок - как получить 1-й случай? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь в течение 2 часов получить первое вхождение пары ключ-значение, которая имеет определенное значение. (кортежи - это ключи, значения - целые числа).

Почему это актуально? Диктовка отсортирована по ключам.

Я могу 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 

Но он получает 2-й случай ?!

Это полностью нарушает порядок:

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

Ожидается: Доступ к первому вхождению возможен, потому что pprint () печатает его правильно

Фактически: я получаю второй случай ....

1 Ответ

2 голосов
/ 01 апреля 2019

Используйте OrderedDict.Он сохраняет порядок вставки, поэтому вы должны получить первое вхождение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...