2016-07-21 9 views
0

辞書がありますリストを含むリストにしたいので、CSVに書き込むことができますが、これまで何をしても機能しません。リストをリストに入れて、csvに印刷する辞書

私はそれが

list = [(aaa, 5787, 40, 1161, 1222), 
('aab',6103, 69, 810, 907), 
('aac', 3081, 41, 559, 638), 
('aae', 1011000, 191, 411, 430)] 

になりたい

dict = [('aaa', [5787, 40, 1161, 1222]), 
('aab', [6103, 69, 810, 907]), 
('aac', [3081, 41, 559, 638]), 
('aae', [1011000, 191, 411, 430])] 

、これは私が持っているものである

[(key1, value1), (key2, value2), ... ,(keyN, valueN)] 

としてそれらをソートするソート(dllist.itemsを())を使用何が間違っているの?どうすれば各要素の行としてcsvに格納するのが最も簡単ですか? sortedからの出力を考えると

+0

あなたが共有することができますあなたが始まっている辞書? '{'aaa':[5787,40,111,1222]、 'aab':[6103,69,810,907]、...}のようなものですか? – smarx

答えて

0

があなたの辞書のように見える、これはあなたがしたい変換を行い、CSVファイルへの出力を書き込むべきかについての私の仮定を考える:

import csv 

d = { 'aaa': [5787, 40, 1161, 1222], 'aab': [6103, 69, 810, 907] } 
rows = [[k] + v for k, v in sorted(d.items())] 

with open("out.csv", "w") as out: 
    writer = csv.writer(out) 
    for row in rows: 
     writer.writerow(row) 

# out.csv: 
# aaa,5787,40,1161,1222 
# aab,6103,69,810,907 
+0

ありがとうございました。@smarxありがとうございました。あなたの前提は正しかったです。もっと詳しく説明してくれて申し訳ありませんでした。でも、それは働いていました。 –

+0

"writer.writerow"を使った後は "閉じる"必要はありませんか? –

+0

@NutshellProgrammerいいえ、ファイル自体は閉じなければならない唯一のものであり、コンテキストマネージャー( 'with ...')です。 – smarx

0

が、これはそれをしない:

>>> my_dict = [('aaa', [5787, 40, 1161, 1222]), ('aab', [6103, 69, 810, 907]), ('aac', [3081, 41, 559, 638]), ('aae', [1011000, 191, 411, 430])] 
>>> my_list = [tuple([i[0]] + i[1]) for i in my_dict] 
>>> 
>>> my_list 
[('aaa', 5787, 40, 1161, 1222), ('aab', 6103, 69, 810, 907), ('aac', 3081, 41, 559, 638), ('aae', 1011000, 191, 411, 430)] 

私は組み込みの名前をシャドウイングを避けるために、それぞれlistdictの代わりにmy_listmy_dictを使用しています。

トリックを行うコード:

[tuple([i[0]] + i[1]) for i in my_dict] 
#  |<- put first item in a list 
#    |<- join with second item 

が既にリストされたタプルの2番目の項目と各リストにおけるtuple連結し最初の項目を置きます。この操作はリスト内包のすべてのタプルに対して繰り返されます。 CSVwriterオブジェクトを考えると


、あなたがして使用することができます。

writer.writerows(my_list) 

を、外出先であなたのCSVファイルにすべての項目を書き込むに。

0

タプル(互いに追加する)を追加して、リストをタプルに変換することができます。私にとってので、次のような作品:

>>> x = [('a', [1,2,3]), ('b', [4,5,6])] 
>>> x 
[('a', [1, 2, 3]), ('b', [4, 5, 6])] 
>>> y = [(i,) + tuple(j) for i, j in x] 
>>> y 
[('a', 1, 2, 3), ('b', 4, 5, 6)] 
関連する問題