【发布时间】:2012-02-10 03:38:14
【问题描述】:
我正在尝试将两个嵌套的 Python 字典组合在一起。他们每个人在顶层都有 10 个键,然后 10 个键中的每一个都有另外 2 个键:'datetimes' 和 'values'。在底层,嵌套字典的每个键大约有 100 000 个项。
2 个字典的来源来自 2 个 pkl 文件。我正在使用加载功能将它们解压到 2 个字典中。有没有办法从这 2 个 pkl 文件中获得 1 个字典?如果没有,如何将这两个字典合二为一?
我尝试过this solution,但它会覆盖一个字典而不是另一个字典,我无法让this solution 工作,因为我有字典而不是示例中的索引列表。按照建议使用 .copy() here 也会将一个字典覆盖在另一个字典上。如果我可以将一个字典附加到另一个字典就好了,但this post 似乎表明字典不能那样工作。
所以我想也许我可以从这些字典中创建数组,然后重新整形和连接它们。但这非常慢。这是我目前所拥有的:
import cPickle
import numpy as np
def load(filename, verbose=False):
# Open file
if verbose : print("Loading %s" % filename)
pkl_file = open(filename, 'rb')
# Load from Pickle file.
data = cPickle.load(pkl_file)
pkl_file.close()
return data
def combineDicts(dictList):
result = np.array([])
for listItem in dictList:
data = np.array([])
for item in listItem.keys():
for innerItem in listItem[item].keys():
data = np.append(data, listItem[item][innerItem])
result = np.append(result, data)
所以我正在尝试运行这些命令:
>>> dict1 = load('file1.pkl', verbose = True)
>>> dict2 = load('file2.pkl', verbose = True)
>>> a = combineDicts([dict1, dict2])
【问题讨论】:
标签: python dictionary nested pickle