[英]Create CSV file from dictionary of list of tuples
我想拿這本字典:
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])
我要打印的是每個鍵(也稱為日期)只有一對元組,因此只有三列。 但是我一直將其打印為:
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)]"
代替這個:
2015-11-10,pear,22
2015-11-10,banana,50
2015-11-13,banana,22
等等。
任何幫助將不勝感激。 謝謝。
數據結構是嵌套的。 您需要對水果和數量進行內部循環 :
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
我認為這將實現您的目標。 您還需要遍歷與每個日期鍵關聯的值對:
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]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.