[英]How to write list values from a dictionary under the key header in a CSV as columns
[英]Write a CSV from Dictionary with Values as Header Keys Aligned Under
嘗試從字典中編寫 csv,其中 csv 標頭是字典值,鍵在匹配值下對齊。
alternate_names = { 'advertisement' : 'advertising',
'ads' : 'advertising',
"adverts" : "advertising",
'distributor' : 'distribution'}
然后會變成像 csv 一樣:
廣告、分銷
廣告,經銷商
廣告
廣告
如果鍵是標題而不是值,則似乎很簡單。
像這樣的東西?
import csv
import collections
import itertools
alternate_names = { 'advertisement' : 'advertising',
'ads' : 'advertising',
"adverts" : "advertising",
'distributor' : 'distribution'}
groups = collections.defaultdict(list)
for word, group in alternate_names.items():
groups[group].append(word)
with open('results.csv', 'w') as fh:
writer = csv.writer(fh)
writer.writerow(groups.keys())
for row in itertools.zip_longest(*groups.values()):
writer.writerow(row)
可能關鍵的技巧是zip
或zip_longest
可用於以“列表列表”形式轉置矩陣。
一個變種...
import csv
from operator import itemgetter
from itertools import groupby
alternate_names = { 'advertisement' : 'advertising',
'ads' : 'advertising',
"adverts" : "advertising",
'distributor' : 'distribution'}
ig1 = itemgetter(1)
groups = {k:[x[0] for x in v] for k,v in
groupby(sorted(alternate_names.items(), key=ig1), ig1)}
data = groups.values()
with open('output.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(groups.keys())
for i in range(max(len(v) for v in data)):
writer.writerow(col[i] if i < len(col) else '' for col in data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.