2016-09-12 12 views
-2

私はPythonのデータフレームに変換する必要がある3レベルの辞書を持っています。 私はかなりPythonに慣れていて、ループでループを実行してファイルをデータフレームに書き込もうとしましたが、必要な出力が得られませんでした。3レベルの辞書からPythonのデータフレームへ

現在の辞書形式: enter image description here

必要なデータフレーム: enter image description here

任意の助けが本当に理解されるであろう!

辞書:

{ 
    "60354": [ 
     { 
      "http://www.aaaaaaaaaaaaaaaaaaaa.com": [ 
       { 
        "Garden fresh": "Best frozen peas", 
        "Soooo flavorful!": "I typically" 
       } 
      ], 
      "http://www.bbbbbbbbbbbbbbbbbbbbbbbb.com": [ 
       { 
        "good food": "a very good product", 
        "Taste is fresh": "Very good frozen peas" 
       } 
      ] 
     } 
    ], 
    "66019": [ 
     { 
      "http://www.cccccccccccccccccccccccccccccc.com": [ 
       { 
        "YUM!": "Tastes really good", 
        "Very good": "Glad to have tried them" 
       } 
      ], 
      "http://www.ddddddddddddddddddddddddddddddddd.com": [ 
       { 
        "Amazing!": "I used orange juice", 
        "Awesome": "Definitely will try other flavors" 
       } 
      ] 
     } 
    ] 
} 
+1

あなたの入力は大括弧を閉じないで形成されていません – Boud

+1

イメージの代わりに辞書のコードを提供できますか? – Jarad

+0

@Boudの場合、イメージはファイルのスニペットであるため、書式設定が正しくありませんでした。今すぐ正しいファイルをアップロードしました。 –

答えて

0
def order_from_chaos(data): 
    result = [] 
    ids = [id_ for id_ in data] 
    id_content = [data[id_][0] for id_ in data] 
    links_in_id_content = [dictionary.keys() for dictionary in id_content] 

    for i in range(len(ids)): 
     id_ = ids[i] 
     links = links_in_id_content[i] 
     descriptions = [id_content[i][key][0] for key in links_in_id_content[i]] 
     content = zip(links, descriptions) 
     for elem in list(content): 
      link = elem[0] 
      description_list = elem[1].items() 
      for description in description_list: 
       formatted_data = id_, link, description[0], description[1] 
       result.append(formatted_data) 
    return result 

data = { 
    "60354": [ 
     { 
      "http://www.aaaaaaaaaaaaaaaaaaaa.com": [ 
       { 
        "Garden fresh": "Best frozen peas", 
        "Soooo flavorful!": "I typically" 
       } 
      ], 
      "http://www.bbbbbbbbbbbbbbbbbbbbbbbb.com": [ 
       { 
        "good food": "a very good product", 
        "Taste is fresh": "Very good frozen peas" 
       } 
      ] 
     } 
    ], 
    "66019": [ 
     { 
      "http://www.cccccccccccccccccccccccccccccc.com": [ 
       { 
        "YUM!": "Tastes really good", 
        "Very good": "Glad to have tried them" 
       } 
      ], 
      "http://www.ddddddddddddddddddddddddddddddddd.com": [ 
       { 
        "Amazing!": "I used orange juice", 
        "Awesome": "Definitely will try other flavors" 
       } 
      ] 
     } 
    ] 
} 


result = order_from_chaos(data) 
[print(res) for res in result] 

がすべてであなたに

('60354', 'http://www.bbbbbbbbbbbbbbbbbbbbbbbb.com', 'Taste is fresh', 'Very good frozen peas') 
('60354', 'http://www.bbbbbbbbbbbbbbbbbbbbbbbb.com', 'good food', 'a very good product') 
('60354', 'http://www.aaaaaaaaaaaaaaaaaaaa.com', 'Soooo flavorful!', 'I typically') 
('60354', 'http://www.aaaaaaaaaaaaaaaaaaaa.com', 'Garden fresh', 'Best frozen peas') 
('66019', 'http://www.cccccccccccccccccccccccccccccc.com', 'Very good', 'Glad to have tried them') 
('66019', 'http://www.cccccccccccccccccccccccccccccc.com', 'YUM!', 'Tastes really good') 
('66019', 'http://www.ddddddddddddddddddddddddddddddddd.com', 'Awesome', 'Definitely will try other flavors') 
('66019', 'http://www.ddddddddddddddddddddddddddddddddd.com', 'Amazing!', 'I used orange juice') 

Process finished with exit code 0 

ないので、クールな構造を与えるだろう。 しかし、とにかくそれを続行するにはちょっとした方法

+0

最善の方法は{'id':{'link': 'http:// ...'、 'description':[desc1 '、' desc2 '、' ... ']}} –

+0

これは私のために働く。私はデータフレームの形でそれを必要としました。これはその後のケーキウォークでした。ありがとう –

関連する問題