Python:如何从这种类型的列表中访问数据?

时间:2011-05-05 13:08:05

标签: python list nested

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

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

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

那我该怎么做呢?

2 个答案:

答案 0 :(得分:9)

这不是一个列表,它是一本字典。它将一个不可变类型作为键,将任何类型作为每个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 :(得分:3)

这不是一个清单。这是一本字典。

字典未排序,因此无法通过数字索引*。

访问

您必须这样参考: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

我的意思是你不使用基于零的索引,你使用的键可以是“你想要的任何东西”,这个键指的是值。