【问题标题】:how do you iterate over a multiple pickled dictionaries你如何遍历多个腌制字典
【发布时间】:2021-05-23 12:05:41
【问题描述】:

如何腌制字典,然后将字典和其他腌制字典写入文件。然后打开该文件并遍历腌制的字典。

import pickle
with open('board.json', 'wb') as f:
    pickle.dump({'x':'1', 'func': str}, f)
    pickle.dump({'x':'2', 'func': open}, f)

with open('board.json', 'rb') as f:
    for p in pickle.load(f):
        print(p)

输出:

x

func

预期输出:

{'x':'1', 'func': str}

{'x':'2', 'func': open}

【问题讨论】:

  • 我不确定你能不能这样写两本字典。创建这些字典的元组然后腌制它们可能会更好

标签: python pickle


【解决方案1】:

像@Suraaj 所说的那样,您最好的选择是创建这些字典的元组。

import pickle
with open('board.json', 'wb') as f:
    pickle.dump(({'x':'1', 'func': str},{'x':'2', 'func': open}), f)

这样当你遍历你的文件时

with open('board.json', 'rb') as f:
    for p in pickle.load(f):
        print(p)

你得到

{'x': '1', 'func': <class 'str'>}
{'x': '2', 'func': <built-in function open>}

【讨论】:

    【解决方案2】:
    import pickle
    
    with open('board.json', 'wb') as f:
        pickle.dump({'x':'1', 'func': str}, f)
        pickle.dump({'x':'2', 'func': open}, f)
    
    with open('board.json', 'rb') as f:
        while True:
            try:
                print(pickle.load(f))
            except EOFError:
                break
    

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 2015-11-14
      相关资源
      最近更新 更多