unpickle词典列表

时间:2014-10-02 18:01:47

标签: python dictionary

我有一个文件,其中包含我在主脚本中不需要的一些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')

2 个答案:

答案 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