#python #list #nested
#python #Список #вложенный
Вопрос:
Краткий вопрос по Python: как мне получить доступ к данным из вложенного списка, подобного этому:
{'альбом': [u'Rumours'], 'комментарий': [u'Track 3'], 'исполнитель': [u'Fleetwood Mac'], 'название': [u'Never Going Back Again'], 'дата': [u'1977'], 'жанр': [u'Rock'], 'номер трека': [u'03']}
Я пытался listname[0][0]
, но он возвращает ошибку: AttributeError: 'int' object has no attribute 'lower'
Итак, как бы мне это сделать?
Комментарии:
1. Ваш пример — это dict, а не список. Вы пробовали обращаться к нему, например, с помощью
foo['genre'][0]
?
Ответ №1:
Это не список, это словарь. Он принимает неизменяемый тип в качестве ключа и любой тип в качестве значения для каждой key,value
пары. В вашем случае это словарь с str
ключами типа и list
в качестве значений. Вы должны сначала извлечь список из словаря, а затем первый элемент из списка, предполагая, что вы имели в виду, что:
somedict = {"test": [u"spam"], "foo": [u"bar"]}
print(somedict["test"][0])
Пожалуйста, обратите внимание, что словарь не привязан к типу и может смешивать типы:
somedict = {1: "test", "foo": ["bar", "spam"]}
И еще немного информации о словарях можно найти здесь: http://docs.python.org/tutorial/datastructures.html#dictionaries
Комментарии:
1. @wkoomson: Тогда, пожалуйста, подумайте о принятии моего ответа 🙂 Вы можете сделать это, нажав кнопку проверки слева от моего ответа.
2. @wkoomson: Как уже любезно спросил @nightcracker, этот ответ следует принять, если он сработал наилучшим образом.
Ответ №2:
Это не список. Это словарь.
Словарь не упорядочен, и, следовательно, к нему нельзя получить доступ через числовой индекс *.
Вы должны ссылаться на него следующим образом: listname['album']
Вышесказанное вернет вам список с одним элементом (который оказывается списком): [u'Rumours']
чтобы получить доступ к списку, вы делаете как обычно.
Итак, в целом:
listname['album'][0]
# Will output the string inside the list.
Обратите внимание, что список мог бы содержать больше элементов, поэтому вы бы ссылались на них вот так [0]
, [1]
и т.д.
Взгляните на docs для получения дополнительной информации.
* Вы можете сделать:
d = {2:"a",1:"b"}
print d[1] ### prints string b
Я имел в виду, что вы не используете индексы на основе нуля, вы используете ключи, которые могут быть «какими угодно», и эти ключи ссылаются на значения.
Комментарии:
1. @user738534: Хорошо, без проблем, я обновил свой ответ, добавив немного больше информации на всякий случай.