#python #python_3x #словари
Есть следующий код: dic = {'A':213, 'B':1424, 'F':412, 'Gs':asf} for key in dic: print(key) Как можно проитерировать его, начиная со второго ключа? Или, например, с ключа F?
Ответы
Ответ 1
В CPython реализации Python 3.6 элементы словаря сохраняют порядок данный им при создании. Это деталь реализации, не гарантированная стандартом языка. Начиная с Python 3.7 - это гарантированное поведение для любой реализации Python: the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec. Соответственно, для Python 3.7+ вы можете сделать: In [6]: list(dic.keys())[2:] Out[6]: ['F', 'Gs'] Для более ранних версий вы можете воспользоваться OrderedDict, как вам уже посоветовал @Хачатур Саркисян: In [9]: from collections import OrderedDict In [10]: odic = OrderedDict(dic) In [11]: list(odic.keys())[2:] Out[11]: ['F', 'Gs']Ответ 2
Словари в Python являются неупорядоченными структурами данных. Обращение по ключу происходит за счет хэширования. Именно поэтому ваш вопрос не имеет под собой основания. Чтобы реализовать нечто похожее используйте структуру данных OrderedDict.Ответ 3
Как уже было сказано, ключи в словаре не имеют определенного порядка. Если нужно пройтись по ключам в лексикографическом порядке, то такое решение: Сортируем ключи, потом проходимся по ним. Пока не встретили ключ F - ничего не печатаем. dic = {'A': 213, 'B': 1424, 'F': 412, 'Gs': 'asf'} print_key = False for key in sorted(dic): if key == 'F': print_key = True if print_key: print(key) Вывод: F GsОтвет 4
num_of_row = 2 for i, x in enumerate(dic): if i>=num_of_row: print(i,x)
Комментариев нет:
Отправить комментарий