我有一个文件,其中包含我在主脚本中不需要的一些dicts和list(我大约900行)。然后我做了以下事情。
myDicts = [DictOne, DictTwo, ListOne, ListTwo]
pickle.dump(myDicts, open("all.p", "wb"))
这会创建我在脚本中加载的all.p文件。
myDicts = pickle.load( open ("all.p", "rb") )
我现在不知道如何访问这些词典。我如何使用导入的词典?我可以打印长度或整个列表,所以我知道数据存在,但我不知道如何访问它,检查了一些帖子,但我无法弄明白。
我试过
我通常会这样做:
if blah == "blah" and sum([x in "text" for x in DictOne]):
所以我试着这样做:
if blah == "blah" and sum([x in "text" for x in myDicts(DictOne)]):
有没有一种简单的方法可以将字典/列表保存回字典/列表?
DictOne = myDicts('DictOne')
ListOne = myDicts('ListOne')
或者如果我有
if flaga:
list=mydicts('ListOne')
elif flagb:
list=mydicts('ListTwo')
答案 0 :(得分:2)
您可以轻松解压缩这样的值:
DictOne, DictTwo, *_ = pickle.load( open ("all.p", "rb") )
如果您需要,可以添加下一个*_
,ListOne
,而不是ListTwo
。
注意:要使用*_
,您将需要Python 3.x.x
答案 1 :(得分:1)
如果您选择了原始列表,则可以通过在列表中引用其索引来访问存储在该列表中的对象。因此,如果您想获得DictTwo
,可以调用myDicts[1]
(因为您从0开始计算)。
如果您希望能够使用基于字符串的名称来调用它,则可以将原始容器设为字典而不是列表(如评论中的@MackM所示):
myDicts = {"DictOne": DictOne, "DictTwo": DictTwo, "ListOne": ListOne, "ListTwo": ListTwo}
您可能想要阅读调用基本python data structures。