我有列表中的项目位置错误的列表。我想以定义的方式重新排序它们并写入文件以供将来使用。
蟒蛇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() - 我知道这是一种非常糟糕的做法,但我确信自己是一个安全的数据提供者。