初心者質問: 値が(可変数の)文字列のリストである辞書があります。最終的には、キーを列1として、個々の項目を値リストから列2-nとしてタブ区切りの1つの行に各辞書項目を書きたいと思います。私は次のコードを使用して、キーを列1、値リストを列2として出力ファイルを生成しましたが、そこから進める方法がわかりません。値を変数に持つタブ区切りファイルに値ペアを書く
mydict = {'spider':['kate', 'susan'],
'fish':['kate'],
'dog':['andy'],
'cat':['andy','colby','jeff']}
f = open('outfile.txt', 'w')
writer = csv.writer(f, delimiter = '\t')
for key, value in orfdict.iteritems():
writer.writerow([orf] + [value])
Pythonドキュメントを使用すると、リスト形式のキーを作成するためにジッパーを()を使用することができますことを示唆している:値のペアを、私は対話プロンプトでこれをしようとすると:
>>> for key,value in mydict.iteritems():
... mypair = zip(key,value)
... print mypair
私はこの奇妙な出力を得ますので、私は明らかに私は物事を理解していないよ:
[('f', 'kate')]
[('c', 'andy'), ('a', 'colby'), ('t', 'jeff')]
[('s', 'kate'), ('p', 'susan')]
[('d', 'andy')]
が、これは、そのリストfに追加し、辞書を超える各反復のために空のリストを作成しようとして行うための最も簡単な方法ですキーを押してから、それぞれの値をインデントされたforループで戻しますか?私は何かが欠けているように感じる。
これは、JSON、XMLおよびその他の構造化文書形式のために設計されたものです。なぜタブ区切りのCSVを使用する必要がありますか? – jozzas
zipの「奇妙な出力」は、シーケンスが必要な文脈で文字列を取ると、文字列の個々の文字が得られることに注意して説明します。つまり、文字列は文字のリストのように動作します。だから、['andy'、 'colby'、 'jeff']で 'cat'を圧縮すると、catは['c'、 'a'、 't']に分割されます。 –
@jozzas - 私はまだそれらのファイルタイプについて何も知らないので...しかし、私はそれらを "学習する"リストに加えました。ありがとう! – pandaSeq