腌制所有变量
Pickle all variables
我正在寻找一种方法来按排序顺序对所有变量及其值进行腌制。我正在尝试以下方法:
预期结果:将 va
的值附加到 totalList
,然后是 vb's
值..等等。然后将 totalList
转储到 pickle 文件中。
import pickle
import time
import os
import re
v0 = ["r0", "hello","hello there","hi there","hi", "hey","good to see you"]
v1 = ["r1", "how are you", "how do you do","how are you doing", "how you doing"]
v2 = ["r2", "What's up" , "what is up" , "what's up bro"]
v10 = ['r10', 'who made you', 'who built you', 'who is your creator']
imports = "pickle","time","os","re"
totalList = []
for key in dir():
if key.startswith("__") == 0 and key not in imports:
print(globals()[key])
totalList.append(globals()[key])
# print(totalList) # getting weird values
with open('queryList.pkl', 'wb') as f:
pickle.dump(totalList, f)
我得到这样的结果:
>> ('pickle', 'time', 'os', 're')
>> []
>> ['r0', 'hello', 'hello there', 'hi there', 'hi', 'hey', 'good to see you']
>> ['r1', 'how are you', 'how do you do', 'how are you doing', 'how you doing']
>> ['r10', 'who made you', 'who built you', 'who is your creator']
>> ['r2', "What's up", 'what is up', "what's up bro"]
我想去掉结果 ('pickle', 'time', 'os', 're')
和 []
,并在附加到 totalList
之前对结果进行排序,或者在迭代之前对其进行排序。
这里有一种方法可以做你想做的事。您应该忽略一些您不感兴趣的变量 - 特别是 imports
和 totalList
。
ignore_list = [ "ignore_list", "totalList"]
totalList = []
for key in dir():
if not key.startswith("__") and key not in ignore_list and type(globals()[key]) != type(pickle):
print(key)
totalList.append(globals()[key])
totalList = sorted(totalList, key=lambda x: int(x[0][1:]) )
结果是:
[['r0', 'hello', 'hello there', 'hi there', 'hi', 'hey', 'good to see you'],
['r1', 'how are you', 'how do you do', 'how are you doing', 'how you doing'],
['r2', "What's up", 'what is up', "what's up bro"],
['r10', 'who made you', 'who built you', 'who is your creator']]
我正在寻找一种方法来按排序顺序对所有变量及其值进行腌制。我正在尝试以下方法:
预期结果:将 va
的值附加到 totalList
,然后是 vb's
值..等等。然后将 totalList
转储到 pickle 文件中。
import pickle
import time
import os
import re
v0 = ["r0", "hello","hello there","hi there","hi", "hey","good to see you"]
v1 = ["r1", "how are you", "how do you do","how are you doing", "how you doing"]
v2 = ["r2", "What's up" , "what is up" , "what's up bro"]
v10 = ['r10', 'who made you', 'who built you', 'who is your creator']
imports = "pickle","time","os","re"
totalList = []
for key in dir():
if key.startswith("__") == 0 and key not in imports:
print(globals()[key])
totalList.append(globals()[key])
# print(totalList) # getting weird values
with open('queryList.pkl', 'wb') as f:
pickle.dump(totalList, f)
我得到这样的结果:
>> ('pickle', 'time', 'os', 're')
>> []
>> ['r0', 'hello', 'hello there', 'hi there', 'hi', 'hey', 'good to see you']
>> ['r1', 'how are you', 'how do you do', 'how are you doing', 'how you doing']
>> ['r10', 'who made you', 'who built you', 'who is your creator']
>> ['r2', "What's up", 'what is up', "what's up bro"]
我想去掉结果 ('pickle', 'time', 'os', 're')
和 []
,并在附加到 totalList
之前对结果进行排序,或者在迭代之前对其进行排序。
这里有一种方法可以做你想做的事。您应该忽略一些您不感兴趣的变量 - 特别是 imports
和 totalList
。
ignore_list = [ "ignore_list", "totalList"]
totalList = []
for key in dir():
if not key.startswith("__") and key not in ignore_list and type(globals()[key]) != type(pickle):
print(key)
totalList.append(globals()[key])
totalList = sorted(totalList, key=lambda x: int(x[0][1:]) )
结果是:
[['r0', 'hello', 'hello there', 'hi there', 'hi', 'hey', 'good to see you'],
['r1', 'how are you', 'how do you do', 'how are you doing', 'how you doing'],
['r2', "What's up", 'what is up', "what's up bro"],
['r10', 'who made you', 'who built you', 'who is your creator']]