2016-04-25 7 views
0

のリストの辞書からCSVファイルを作成します。私は私が持っているこの辞書を利用したいと思いタプル

table = {2015-11-10:[('pear', 22), ('banana', 50)], 
    2015-11-13:[('banana', 22), ('apple', 50), ('strawberry', 30), ('pear', 35), ('orange', 2), ('mango', 76)] 
    2015-11-12:[('banana', 22), ('orange', 50), ('mango', 30), ('strawberry', 35)] 
    } 

    with open ('transaction.csv', 'wb') as f: 
     w = csv.writer(f, delimiter = ',') 
     w.writerow(['transaction_date', 'fruits', 'quantity']) 
     for k,v in table.items(): 
      w.writerow([k,v]) 

私は何を印刷したいことは、各キーは、別名日付はタプルように一つだけのペアを持っているということです3つの列しかありません。

2015-11-10,pear,22 
    2015-11-10,banana,50 
    2015-11-13,banana,22 

などなど:この代わりに

2015-11-10,"[('pear', 22), ('banana', 50)]" 
    2015-11-13,"[('banana', 22), ('apple', 50), ('strawberry', 30), ('pear', 35), ('orange', 2), ('mango', 76)]" 
    2015-11-12,"[('banana', 22), ('orange', 50), ('mango', 30), ('strawberry', 35)]" 

: は、しかし、私はそれは次のようにプリントアウトされたままにします。

ご協力いただければ幸いです。ありがとうございました。

+3

予想される出力の例を挙げることができますか?ありがとう – Brian

+0

dictのダッシュは減算を表します: '{2015-11-10:None} ==> {1994:None}'これはあなたが意図したものではないと仮定していますか?所望出力の –

+0

例: 'TRANSACTION_DATE、果物、数量\ N 2015年11月10日、梨、22 \ N 2015年11月10日、バナナ、50 \ N 2015年11月13日、バナナ、22 \ 2015-11-13、apple、50 \ n 2015-11-13、strawberry、30 \ n ... ' – user106279

答えて

3

データ構造体がネストされています。あなたは果物と数量を超える内側のループが必要になります。

import csv 

table = {"2015-11-10": [('pear', 22), ('banana', 50)], 
     "2015-11-13": [('banana', 22), ('apple', 50), ('strawberry', 30), ('pear', 35), ('orange', 2), ('mango', 76)], 
     "2015-11-12": [('banana', 22), ('orange', 50), ('mango', 30), ('strawberry', 35)] 
     } 

with open('transaction.csv', 'wb') as f: 
    w = csv.writer(f, delimiter=',') 
    w.writerow(['transaction_date', 'fruits', 'quantity']) 

    for transaction_date, fruits in table.items(): 
     for fruit, quantity in fruits: 
      w.writerow([transaction_date, fruit, quantity]) 

ここで私は、コードを実行した後にtransaction.csvの内側に持っているものされています

transaction_date,fruits,quantity 
2015-11-10,pear,22 
2015-11-10,banana,50 
2015-11-13,banana,22 
2015-11-13,apple,50 
2015-11-13,strawberry,30 
2015-11-13,pear,35 
2015-11-13,orange,2 
2015-11-13,mango,76 
2015-11-12,banana,22 
2015-11-12,orange,50 
2015-11-12,mango,30 
2015-11-12,strawberry,35 
0

私はこれがあなたの目的を達成すると思います。

import csv 

table = { 
    '2015-11-10':[('pear', 22), 
        ('banana', 50)], 
    '2015-11-13':[('banana', 22), 
        ('apple', 50), 
        ('strawberry', 30), 
        ('pear', 35), 
        ('orange', 2), 
        ('mango', 76)], 
    '2015-11-12':[('banana', 22), 
        ('orange', 50), 
        ('mango', 30), 
        ('strawberry', 35)] 
    } 

with open ('transaction.csv', 'wb') as f: 
     w = csv.writer(f, delimiter = ',') 
     w.writerow(['transaction_date', 'fruits', 'quantity']) 
     for date, pairs in table.items(): 
      for pair in pairs: 
       w.writerow([date, pair[0], pair[1]]) 
関連する問題