我有一个循环,我想 pickle 所有输出。问题是我无法将我的变量分配为 pickle 名称。我可以用这个小例子来说明:
lst = [a,d,e,g,h,j]
for i in lst:
pickle.dump(i,open('xx.p','wb'))
正如我之前所说,我想为列表中的每个 i
分配不同的名称。换句话说,我想将我的变量值分配为 pickle 名称。 ('a.p' -> 对于第一个,'d.p' -> 对于第二个等等)。
最佳答案
如果您使用两个列表,一个用于您的对象,一个用于您想要命名的对象,您可以轻松地做到这一点:
lst = [a,d,e,g,h,j]
nm_lst = ['a', 'b', 'd', 'e', 'h', 'j']
for i,nm in zip(lst,nm_lst):
pickle.dump(i,open('{0}.p'.format(nm),'wb'))
或者你可以用字典来做到这一点(如评论中所建议的那样)
my_dict = {'a':a, 'b':b}
for key, val in my_dict.iteritems():
pickle.dump(val,open('{0}.p'.format(key),'wb'))
(如果您使用的是 python3,iteritems
-> items
)
关于python - 如何在 Python 中动态分配 pickle 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923431/