Подтвердить что ты не робот

Массив Python со строковыми индексами

Можно ли использовать строки в качестве индексов в массиве в python?

Например:

myArray = []
myArray["john"] = "johns value"
myArray["jeff"] = "jeffs value"
print myArray["john"]
4b9b3361

Ответ 1

То, что вы хотите, называется ассоциативным массивом. В Python они называются словарями.

Словари иногда встречаются на других языках как "ассоциативные воспоминания" или "ассоциативные массивы". В отличие от последовательностей, которые индексируются диапазоном чисел, словари индексируются ключами, которые могут быть любого неизменного типа; строки и числа всегда могут быть ключами.

myDict = {}
myDict["john"] = "johns value"
myDict["jeff"] = "jeffs value"

Альтернативный способ создания вышеуказанного диктанта:

myDict = {"john": "johns value", "jeff": "jeffs value"}

Доступ к значениям:

print(myDict["jeff"]) # => "jeffs value"

Получение ключей (в Python v2):

print(myDict.keys()) # => ["john", "jeff"]

В Python 3 вы получите dict_keys, который является представлением и немного более эффективным (подробности см. в представлении документов и PEP 3106).

print(myDict.keys()) # => dict_keys(['john', 'jeff']) 

Если вы хотите узнать о внутренностях словаря Python, я рекомендую эту ~ 25-минутную видеопрезентацию: https://www.youtube.com/watch?v=C4Kc8xzcA68. Он называется "Могучий словарь".

Ответ 2

Еще лучше, попробуйте OrderedDict (предполагая, что вы хотите что-то вроде списка). Ближе к списку, чем обычный dict, поскольку ключи имеют порядок, так же как элементы списка имеют порядок. С помощью обычного dict ключи имеют произвольный порядок.

Обратите внимание, что это доступно в Python 3 и 2.7. Если вы хотите использовать более раннюю версию Python, вы можете найти устанавливаемые модули для этого.