【问题标题】:Python: How to access data from this type of list?Python:如何从这种类型的列表中访问数据?
【发布时间】:2011-05-05 13:08:04
【问题描述】:

快速 Python 问题:如何访问嵌套列表中的数据,如下所示:

{'album':[u'Rumours'],'comment':[u'Track 3'],'artist':[u'Fleetwood Mac'],'title':[u'Never Going Back Again'], '日期':[u'1977'],'流派':[u'Rock'],'tracknumber':[u'03']}

我试过listname[0][0],但它返回错误: AttributeError: 'int' object has no attribute 'lower'

那我该怎么做呢?

【问题讨论】:

标签: python list nested


【解决方案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

【讨论】:

  • @wkoomson:那么请考虑接受我的回答 :) 您可以通过单击我的回答左侧的复选按钮来做到这一点。
  • @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

我的意思是你不使用从零开始的索引,你使用的键可以是“任何你想要的”,而这些键是指值。

【讨论】:

  • @user738534:好的,没问题,我已经用更多信息更新了我的答案,以防万一。
猜你喜欢
  • 2021-12-03
  • 2020-02-16
  • 2021-06-16
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多