私が達成しようとしているのは、次のような csv ファイルです。
,h.r9,h.r8,h.r5,h.r4,h.r7,h.r6,h.r1,h.r3,h.r2,h.r10
chris,0,1,0,0,0,0,0,1,0,0
bob,0,0,1,1,1,1,0,0,0,1
dick,1,0,1,0,0,0,0,0,1,1
ab,1,2,0,0,0,0,0,0,0,0
emma,0,0,1,0,1,0,1,0,1,0
多少関係ありません:このようなマトリックスの実際の名前を知っている人はいますか? これにより、少なくともこの問題のグーグル検索が容易になります。
データはもともと次のような辞書にあります。
dict = {}
dict['ab'] = ["h.r1","h.r2"]
dict['bob'] = ["h.r3","h.r4","h.r5","h.r6","h.r10"]
dict['chris'] = ["h.r2","h.r8"]
dict['dick'] = ["h.r1","h.r10","h.r9","h.r3"]
dict['emma'] = ["h.r3","h.r5","h.r7","h.r9"]
したがって、人が辞書に変数を持っている場合、CSV には 1 があり、それ以外の場合はゼロになるはずです。
以下のコードは csv ファイルを作成しますが、すべてゼロです。1 と 0 の論理をどのように実装しますか? PHP/HTMLでこれを行うことができますが、Pythonに非常に慣れていないので、うまくいきません...また、この関数が既に組み込まれている可能性のあるライブラリはありますか? (たぶんうるさい?)
import csv
dict = {}
dict['ab'] = ["h.r1","h.r2"]
dict['bob'] = ["h.r3","h.r4","h.r5","h.r6","h.r10"]
dict['chris'] = ["h.r2","h.r8"]
dict['dick'] = ["h.r1","h.r10","h.r9","h.r3"]
dict['emma'] = ["h.r3","h.r5","h.r7","h.r9"]
mergedlist = []
for k,v in dict.items():
mergedlist = mergedlist + v
mergedlist = list(set(mergedlist))
listlen = len(mergedlist)
mergedlist[0:0] = " "
thekeys = []
for k in dict.keys():
thekeys.append(k)
thecsv = csv.writer(open("your.csv", 'w', newline=''))
thecsv.writerow(mergedlist)
for col in thekeys:
thecsv.writerow([col] + ['0']*listlen) #does the logic go in here somehow??