使用字段名称访问字典
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)
我有一个 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)