使用字段名称访问字典

Accessing dictionaries with field names

我有一个 unpickle 函数,returns 一个 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'。我应该使用哪个结构来保存这两个列表,以便它们可以正常工作。 谢谢。

将你的函数改成这个

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

说明

您已将 pickle 保存为列表。当你加载泡菜时,它仍然是一个列表。

实际保存为字典

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