如果我解释我认为我在做什么,我希望有人可以解释我哪里出错了.
我有以下字典:
ls = [{
'The Wolf Gift (13)': {
'cover': 'V:\\Books\\Anne Rice\\The Wolf Gift (13)\\cover.jpg',
'author': 'Anne Rice',
'year': '1988'
},
'Mummy (14)': {
'cover': 'V:\\Books\\Anne Rice\\Mummy (14)\\cover.jpg',
'author': 'Anne Rice',
'year': '1989'
},
}]
Run Code Online (Sandbox Code Playgroud)
首先是上面的一个多维字典?我想确保我说的是正确的事情.其次,我如何循环它以检索各个级别的信息.字典是动态填充的,所以我不知道密钥.
我曾尝试for book in ls
,然后book['cover']
等..但它似乎并没有工作.我需要书名,然后是每本书的附加信息(封面等......).我对python很新.我来自PHP,使用数组是我的面包和黄油,但python正在杀了我....
谢谢
如果ls
包含多个词典,可以使用她的例子。
for dic in ls:
for key in dic:
print 'Book Name: %s' % (key)
for value in dic[key]:
print '\t%s: %s' % (value, dic[key][value])
Run Code Online (Sandbox Code Playgroud)
这将产生以下输出:
Book Name: Mummy (14)
year: 1989
cover: V:\Books\Anne Rice\Mummy (14)\cover.jpg
author: Anne Rice
Book Name: The Wolf Gift (13)
year: 1988
cover: V:\Books\Anne Rice\The Wolf Gift (13)\cover.jpg
author: Anne Rice
Run Code Online (Sandbox Code Playgroud)
或者,您可以删除最终的for循环并直接访问键,如下所示:
for dic in ls:
for key in dic:
print 'Book Name: %s' % (key)
print 'Publish Year: %s' % dic[key]['year']
Run Code Online (Sandbox Code Playgroud)
这将给出以下输出:
Book Name: Mummy (14)
Publish Year: 1989
Book Name: The Wolf Gift (13)
Publish Year: 1988
Run Code Online (Sandbox Code Playgroud)
这是一个包含单个字典的列表。您可以执行以下操作:
>>> books = ls[0]
>>> for book, details in books.iteritems():
print book,'-->', details['cover']
...
Mummy (14) --> V:\Books\Anne Rice\Mummy (14)\cover.jpg
The Wolf Gift (13) --> V:\Books\Anne Rice\The Wolf Gift (13)\cover.jpg
Run Code Online (Sandbox Code Playgroud)