0

私はPythonに非常に慣れていないので、お詫び申し上げます。私はいくつかの名前を繰り返し処理していますが、それらはすべて同じ辞書のキーと値を取得しています。キーを一度印刷して、反復ごとに csv に値を追加し続けるにはどうすればよいですか?

     for name in namelist:
       print >> out,','.join(data.keys())
       print >> out,','.join(data.values())
     fundamental_out.close()

出力は次のようになります

   >>'key1,key2,key3'
   >>'value1,value2,value3'
   >>'key1,key2,key3'
   >>'value1,value2,value3'

たとえば、key3 は名前、key1 と 2 は数値です。

次のような出力を取得するにはどうすればよいですか

   >>'key1,key2,key3'
   >>'value1,value2,value3'
   >>'value1,value2,value3'

また、key3 (つまり、名前が最初の列になる) の順序でデータ辞書を並べ替える方法はありますか?

   >>'key3,key1,key2'
   >>'value3,value1,value2'
   >>'value3,value1,value2'

ありがとう!

4

2 に答える 2

0

自然な並べ替えを使用して、辞書のキーを並べ替えることができます。

import re

def natural_sort(l): 
    #https://stackoverflow.com/a/4836734/846892
    convert = lambda text: int(text) if text.isdigit() else text.lower() 
    alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] 
    return sorted(l, key = alphanum_key)

sorted_keys = ['key3'] + natural_sort(data.viewkeys() - {'key3'})

print >> out, ','.join(keys)
for name in namelist:
       print >> out, ','.join(str(data[k]) for k in keys)
于 2013-11-11T04:12:13.013 に答える