Python сортировка упорядоченного словаря и результирующего итератора .items () - PullRequest
0 голосов
/ 04 марта 2020

Как отсортировать OrderedDict определенно существует в другом месте на сайте. Пример того, как это сделать:

foo = OrderedDict(sorted(ordered_dict.items(), key=lambda x: x[1][0]))

Для пояснения у меня есть OrderedDict of List, и поэтому это первая запись в списке ключей OrderedDict, по которой происходит сортировка. Я возвращаю отсортированную коллекцию как новый OrderedDict с именем foo. Отлично.

Но тогда мой вопрос вращается вокруг foo.items (). Если бы я должен был тогда сделать:

for idx, row in foo.items():

Значения, указанные в строке, возвращаются в отсортированном порядке, доказывая, что сортировка выше работает. Однако переменная idx находится в сумасшедшем случайном порядке и не коррелирует с позицией в новом OrderedDict, возможно, это позиция в старом OrderedDict, это то, что я предполагаю.

Итак, мой вопрос заключается в том, как получу ли я его так, чтобы строка возвращалась отсортированной (как сейчас) и idx увеличивается на 1 за раз в порядке возрастания?

ОБНОВЛЕНИЕ

foo = list(OrderedDict(sorted(ordered_dict.items(), key=lambda x: x[1][0])).values())

for idx in range(0, len(foo)):
    row = foo[idx]

Это что-то вроде того, что я хочу сделать. Ключ не имеет значения из оригинальной диктовки для меня. Что мне нужно, так это элемент, отсортированный по первому значению в списке, содержащемся в значениях dict, а затем, чтобы иметь возможность сказать, какую позицию в списке занимает эта строка (для дальнейшего использования и не видна во фрагменте выше). Так что да, хотя ввод должен быть диктом, мне не нужен новый дикт, мне просто нужен список.

...