Python: Как получить доступ к данным из этого типа списка?

#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] ?

2. docs.python.org/library/stdtypes.html#mapping-types-dict

Ответ №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: Хорошо, без проблем, я обновил свой ответ, добавив немного больше информации на всякий случай.