アイテムが間違った位置にあるリストのリストがあります。そして、定義された方法でそれらを並べ替えて、将来の使用のためにファイルに書き込みたいと思います。
Python 2.7.3
私が持っているもの:
data_in = [..., [a1, a4, a0, a2, a3], ...] # where a0..a4 - some values
order_key = [2,0,3,4,1] # "2" means: in place with index 0 shall be item with index 2
結果として、次のようになります。
file.jsons:
prefix [ ... ] \n
prefix [a0, a1, a2, a3, a4] \n
prefix [ ... ] \n
私はそのような「素朴な」方法でそれを行います:
import json
from itertools import imap
formatter = "prefix {} \n".format
with open('file.jsons') as f:
f.writelines( imap(formatter, imap(json.dumps,([row[i] for i in order_key] for row in data_in ))))
# ([row[i] for i in order_key] for row in data_in ) - generator: yields arranged rows
# imap(json.dumps, ...) - generator: dumps lists into json strings
# imap(formatter, ... ) - generator: formats strings in proper way
# f.writelines( .. ) - consumes and writes to file
いくつか質問があります:
- 再配置するのに適切な方法ですか?を投げ捨てます?
- より速い方法はありますか?(私はこれをできるだけ速くする必要があります)
- json.dumps()/ json.reads()またはstr()/ eval()を使用しますか?これは非常に悪い習慣であることは知っていますが、安全なデータプロバイダーであると確信しています。