【问题标题】:Adding dictionary values into an array将字典值添加到数组中
【发布时间】:2013-10-06 20:59:26
【问题描述】:

我有一个名为 audio 的字典,它以 unicode 显示有关 MP3 文件的信息。我使用 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() 但是我得到一个错误。有没有其他选择?此外,我尝试使用 .iteritem() 直接从 dict 创建一个列表,但所有值都在 unicode 中,因此更难组织。另外,它为每个 .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 键上使用 str() 之后,将其打印出来只会给我音频字典中每个 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']

当我打印 track[0] 时,它给了我所有 5000 首歌曲并且 trck[1] 超出了范围。我该如何解决这个问题?

【问题讨论】:

  • 你有列表,而不是数组。Python 中也有一个 array 模块。
  • 你得到什么错误?
  • @Martjin 啊!我祝贺你的第一条评论非常好。我很高兴看到有人关注术语的准确性。

标签: python dictionary


【解决方案1】:

列表的append 方法在原地修改列表并返回None。使用append 时放弃赋值,即使用trck.append(tracks) 而不是trck = trck.append(tracks),否则变量将被分配给None,而您的列表将丢失。

【讨论】:

  • 谢谢,但现在我有了这个列表,其中 list[0] 对应于所有专辑标题。我怎样才能使每个专辑标题占据列表(n)的位置?
  • 也许你想要trck = list(tracks) 之类的东西而不是追加,但如果没有更多关于数据组织方式的信息,它真的必须知道。如果您可以在您的问题中添加一些示例数据,那将真的很有帮助。一般来说,如果您包含重现您的错误或问题的工作代码以及相关的小数据集,您将在 SO 上获得更好的答案。
猜你喜欢
  • 1970-01-01
  • 2017-11-15
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2012-03-20
  • 2021-09-12
相关资源
最近更新 更多