1

我在 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),所以它看起来像这样:

  • 麦当娜
    • 光射线
      • 代替爱
      • 冷冻
    • 要记住的东西
      • 你会看到的
    • 睡前故事
      • 秘密
  • U2
    • 约书亚树
      • 哪里的街道..
      • 我还没...
    • 宝贝
      • 直到结束。。

我不知道如何以这种方式对其进行编码:我想到了嵌套循环,但找不到解决方案。有没有人为这个查询设计过解决方案,请用任何语言?如果不是代码,我将需要逻辑。然后任何人都可以使用自己的编程语言来实现它。

4

1 回答 1

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)
于 2012-11-24T22:13:42.980 回答