我在python列表中有一个数据表,数据如下所示:
[
{Artist='Madonna', album='Ray of Light', title='Substitute for love'},
{Artist='Madonna', album='Ray of Light', title='Frozen'},
{Artist='Madonna', album='Something to remember', title='You'll see'},
{Artist='Madonna', album='Bedtime stories', title='Secret'},
{Artist='U2', album='The Joshua Tree', title='Where the streets have no name'},
{Artist='U2', album='The Joshua Tree', title='I still haven'ts found...'},
{Artist='U2', album='The Joshua Tree', title='With or without you'},
{Artist='U2', album='Acthung Baby', title='One'},
{Artist='U2', album='Acthung Baby', title='Until the end of the world'}
]
我想将它放入树视图(特别是QTreeWidget)中,所以它看起来像这样:
我不知道如何用这种方式编写代码:我想到了嵌套循环,但我找不到解决方案。有没有人使用任何语言为这个查询的解决方案工作? 如果不是代码,我需要逻辑。然后任何人都可以使用他们自己的编程语言来实现它。
答案 0 :(得分:1)
您可以使用嵌套的defaultdicts将记录列表转换为嵌套字典。
from collections import defaultdict
data = [ {'Artist':'Madonna', 'album':'Ray of Light', 'title':'Substitute for love'},
....
{'Artist':'U2', 'album':'Acthung Baby', 'title':'Until the end of the world'}
]
tree_data = defaultdict(lambda: defaultdict(list))
for d in data:
tree_data[d['Artist']][d['album']].append(d['title'])
获得此表单中的数据后,可以轻松地以您需要的格式打印数据。
以下是您的示例的简单方法:
for artist in tree_data.keys():
print(artist)
for album, titles in tree_data[artist].iteritems():
print("\t" + album)
for title in titles:
print ("\t\t" + title)