2013-10-04 7 views
0

У меня есть этот словарь под названием audio, который отображает информацию о файлах MP3 в unicode. Я использовал str(), чтобы превратить названия альбомов и заголовков в строки.Добавление значений словаря в массив

alb = [] 
trck = [] 
audio = MP3(fullname) 

albums = (str(audio['TALB'])) #TALB is the album key 
tracks = (str(audio['TIT2'])) #Track key 
trck = trck.append(tracks) 
alb = alb.append(album) 

Когда я печатаю результат после шестой строки, он выгружает все названия альбомов и треков из 5000+ песен. После этого я хотел бы добавить треки и альбомы в отдельные списки, поэтому я использую append(), но я получаю сообщение об ошибке. Есть ли альтернативы? Также я попытался создать список прямо из dict, используя .iteritem(), но все значения находятся в юникоде, поэтому его сложнее организовать. Кроме того, он создает отдельный массив для каждого .mp3-файла.

Я относительно новичок в Python, поэтому любая помощь в отношении моей проблемы будет оценена по достоинству.

ДОПОЛНИТЕЛЬНО:

аудио словарь дает мне о 5000+ строк что-то ищет, как это, когда я распечатать его:

{'TDRC': TDRC(encoding=3, text=[u'1993']), 'TIT2': TIT2(encoding=3, text=[u'All I Wanna  Do']), 'TRCK': TRCK(encoding=3, 
text=[u'9']), 'TPE1': TPE1(encoding=3, text=[u'Sheryl Crow']), 'TALB': TALB(encoding=3,  text=[u'Tuesday Night Music Club 
']), 'TSSE': TSSE(encoding=3, text=[u'Xiph.Org libVorbis I 20070622']), 'TCON':  TCON(encoding=3, text=[u'Rock'])} 

Таким образом, после использования ул() на, скажем, все TIT2 клавиши, распечатывая его, дает мне только значения каждого ключа TIT2 в аудио-словаре.

Tricky Kid 
Vent 
A Groovy Kind Of Love 
Do You know The Way To San Jose? 
Jamaica 
I (Who Have Nothing) 
River Deep - Mountain High 
Spanish Harlem 
Ten Lonely Guys 
Will You Love Me Tomorow 
Cry 
In The Sand 
Michel 
My Friend 
The Dark 
Let It Ride 
Urban Solitude 
Be A Man 

И так далее. Затем я пытаюсь добавить эти результаты в пустой список trck [].

trck.append(tracks) 
print trck 

Когда я печатаю это, я получаю это:

['Tricky Kid'] 
['Vent'] 
['A Groovy Kind Of Love'] 
['Do You know The Way To San Jose?'] 
['Jamaica'] 
['I (Who Have Nothing)'] 
['River Deep - Mountain High'] 
['Spanish Harlem'] 
['Ten Lonely Guys'] 
['Will You Love Me Tomorow'] 
['Cry'] 
['In The Sand'] 
['Michel'] 
['My Friend'] 
['The Dark'] 
['Let It Ride'] 
['Urban Solitude'] 
['Be A Man'] 

При печати дорожки [0], это дает мне все 5000 песен и TRCK [1] находится вне диапазона. Как я могу это исправить?

+0

У вас есть списки, а не массивы .. в Python есть модуль 'array'. –

+0

Какая ошибка у вас? –

+0

@Martjin Aah! Поздравляю вас за ваш очень хороший первый комментарий. Я рад видеть, что кто-то обращает внимание на точность терминов. – eyquem

ответ

3

Метод списка изменяет список на месте и возвращает None. Отмените присваивание при использовании append, то есть используйте trck.append(tracks) вместо trck = trck.append(tracks), в противном случае переменная присваивается None и вы потеряете свой список.

+0

Спасибо, но теперь у меня есть этот список, где список [0] соответствует всем названиям альбомов. Как я могу сделать так, чтобы каждый заголовок альбома занимал позицию списка (n)? – Waves

+0

Возможно, вместо добавления вы хотите что-то вроде 'trck = list (tracks)', но ему действительно нужно было знать, не имея дополнительной информации о том, как ваши данные организованы. Если бы вы могли добавить некоторые данные примера к вашему вопросу, это действительно помогло бы. В общем, вы получите ответы на SO, если вы включите рабочий код, который воспроизводит вашу ошибку или проблему, и небольшой набор данных, если он имеет значение. –

+0

Извините. Я добавил немного больше информации. – Waves

Смежные вопросы