python pickle:仅将唯一列表转储到 pickle 文件
python pickle: dump only unique list to pickled file
我有一个函数可以为每个样本生成一个基因名称列表。我想保存此列表并在其他时间重新使用它。但是,当转储到 pickle 文件中时,我喜欢先读取 pickle 文件,并且只 select 只转储不在 pickle 文件中的基因。我不希望我的 pickle 文件包含重复的基因列表,因为它会创建一个巨大的 pickle 文件。
例如
如果我的 pickled 文件已经包含以下基因:'a'、'ab'、'ac' 而我新创建的列表是:
unique_genes_list = ["a", "ab", "ac", "ad"]
那我只想把 'ad' 倒出来泡菜。有什么好的方法吗?
谢谢
如果您的目标是将新基因 'ad'
添加到现有的基因列表中,您可以按照以下方法从 pickle 中读取旧数据,添加新基因并重新 pickle:
import pickle
unique_genes_list = ["a", "ab", "ac", "ad"]
with open('some/path', 'rb') as in_pickle:
old_data = pickle.load(in_pickle) ## ["a", "ab", "ac"]
## Adds 'ad' and any other new data
old_data.extend([x for x in unique_genes_list if not x in old_data])
## Save the new combined data
with open('some/path', 'wb') as out_pickle:
pickle.dump(old_data, out_pickle) ## dumps ["a", "ab", "ac", "ad"] overwriting old pickle
编辑:
如果您希望只检索唯一值并只是 pickle ['ad']
,那么您可以这样做
import pickle
unique_genes_list = ["a", "ab", "ac", "ad"]
with open('some/path', 'rb') as in_pickle:
old_data = pickle.load(in_pickle) ## ["a", "ab", "ac"]
## Gets just 'ad' or any other unique in a new list
new_genes = [x for x in unique_genes_list if not x in old_data] ##['ad']
## Save the new unique data
with open('some/new/path', 'wb') as out_pickle:
pickle.dump(new_genes, out_pickle) ## dumps ["ad"]
我有一个函数可以为每个样本生成一个基因名称列表。我想保存此列表并在其他时间重新使用它。但是,当转储到 pickle 文件中时,我喜欢先读取 pickle 文件,并且只 select 只转储不在 pickle 文件中的基因。我不希望我的 pickle 文件包含重复的基因列表,因为它会创建一个巨大的 pickle 文件。
例如
如果我的 pickled 文件已经包含以下基因:'a'、'ab'、'ac' 而我新创建的列表是:
unique_genes_list = ["a", "ab", "ac", "ad"]
那我只想把 'ad' 倒出来泡菜。有什么好的方法吗?
谢谢
如果您的目标是将新基因 'ad'
添加到现有的基因列表中,您可以按照以下方法从 pickle 中读取旧数据,添加新基因并重新 pickle:
import pickle
unique_genes_list = ["a", "ab", "ac", "ad"]
with open('some/path', 'rb') as in_pickle:
old_data = pickle.load(in_pickle) ## ["a", "ab", "ac"]
## Adds 'ad' and any other new data
old_data.extend([x for x in unique_genes_list if not x in old_data])
## Save the new combined data
with open('some/path', 'wb') as out_pickle:
pickle.dump(old_data, out_pickle) ## dumps ["a", "ab", "ac", "ad"] overwriting old pickle
编辑:
如果您希望只检索唯一值并只是 pickle ['ad']
,那么您可以这样做
import pickle
unique_genes_list = ["a", "ab", "ac", "ad"]
with open('some/path', 'rb') as in_pickle:
old_data = pickle.load(in_pickle) ## ["a", "ab", "ac"]
## Gets just 'ad' or any other unique in a new list
new_genes = [x for x in unique_genes_list if not x in old_data] ##['ad']
## Save the new unique data
with open('some/new/path', 'wb') as out_pickle:
pickle.dump(new_genes, out_pickle) ## dumps ["ad"]