Эквивалент для LinkedHashMap в Python
LinkedHashMap является реализацией Java структуры данных типа Hashtable (dict в Python) с предсказуемым порядком итерации. Это означает, что во время обхода всех ключей они упорядочиваются путем вставки. Это делается дополнительным связанным списком, поддерживающим порядок вставки.
Есть ли эквивалент в Python?
Ответы
Ответ 1
Если вы используете Python 2.7 или Python >= 3.1, вы можете использовать collections.OrderedDict в стандартной библиотеке.
Этот ответ на вопрос Как вы извлекаете элементы из словаря в том порядке, в котором они вставлены? содержит реализацию упорядоченного dict, если вы не используете Python 3.x и не хотите давать себе зависимость от стороннего orderdict.
Ответ 2
Хотя вы можете сделать то же самое, сохранив список, чтобы отслеживать порядок вставки, Python 2.7 и Python >= 3.1 имеют класс OrderedDict в модуле коллекций.
До версии 2.7 вы можете подклассифицировать dict
после этого рецепта.
Ответ 3
Я не уверен, что это то, о чем вы просите:
>>> dic = {1: 'one', 2: 'two'}
>>> for k, v in dic.iteritems():
... print k, v
вы можете заказать dic в порядке вставки с помощью ordereddict.
d = ordereddict(dic, relax=True)
Ответ 4
Я так не думаю; вам придется использовать dict плюс список. Но вы можете легко обернуть это в классе и определить keys
, __getitem__
, __setitem__
и т.д., Чтобы заставить его работать так, как вы хотите.