使用字段名称访问字典

时间:2020-04-30 21:45:15

标签: python pickle

我有一个释放函数,它返回一个dict:

def unpickle(file):
with open(file, 'rb') as fo:
    dict = pickle.load(fo, encoding='bytes')
return dict

和一个读取带有字段名的腌制对象的函数(不知道这是否是正确的定义):

def do_sth():
    all_data = unpickle('mypickle.pickle')
    image_filenames = all_data["Filenames"]
    conditions = all_data["Labels"] 

为简便起见,我有两个列表,分别为Filenames = ['001.png','002.png']Labels = ['0','1'],我需要在mypickle.pickle下腌制并保存,以便可以在do_sth函数下调用它们。到目前为止,我所做的是:

data = [Filenames,Labels]
with open("mypickle.pickle", "wb") as f:
pickle.dump(data, f)

data = dict(zip(file_paths, labels))
with open("mypickle.pickle", "wb") as f:
pickle.dump(data, f)

但是我得到KeyError :'Filenames'。我应使用哪种结构来保存这两个列表,以便它们可以正常工作。 谢谢。

1 个答案:

答案 0 :(得分:3)

将功能更改为此

def do_sth():
    all_data = unpickle('mypickle.pickle')     
    image_filenames = all_data[0]    
    conditions = all_data[1] 

说明

您将泡菜保存为列表。加载泡菜时,它仍然是列表。

实际上将其另存为字典

data = {"Filenames": Filenames, "Labels": Labels}
with open("mypickle.pickle", "wb") as f:
    pickle.dump(data,  f)
相关问题