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
    • ジョシュア ツリー
      • 通りがどこに..
      • 私はまだ...
    • アクトンベイビー
      • 1
      • 最後まで..

このようにコーディングする方法がわかりません。ネストされたループについて考えていますが、解決策が見つかりません。このクエリの解決策に取り組んだ人はいますか? コードでない場合は、ロジックが必要です。そうすれば、誰でも独自のプログラミング言語を使用してそれを実装できます。

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 に答える