【发布时间】:2017-08-22 14:46:53
【问题描述】:
我在这里发帖是因为我找不到我的问题的答案。
让我解释一下:我正在尝试执行多处理任务。 我有 10 个工人,每个人都返回一个字典,值是包含 3 个元素、2 个整数和 1 个列表的列表:
例如:
worker 0 返回{0 : [3,15, [[0,1,1], [1,1,0]] , 2 : [11,14, [[3,0,1], [1,4,2]]}
worker 1 返回{0 : [6,8, [[4,1,7], [5,8,8]] , 2 : [19,27, [[6,1,11], [4,4,2]]}
worker 2 返回{0 : [13, 7, [[0,1,1], [1,1,0]], 2 : [7, 3, [[3,0,1], [5,3,1]]}
这些字典存储在不同的 pickle 文件中。
在这种情况下,我有 2 个不同的键,所以我想要 2 个字典(但数字是一个变量)。
它们应该是这样的:
d1 = {0 : [X ,Y, [[0,1,1], [4,1,7],[0,1,1],[1,1,0],[5,8,8],[1,1,0] }
d1 = {2 : [X ,Y, [[0,1,1], [4,1,7],[0,1,1],[1,1,0],[5,8,8],[1,1,0] }
X 是第一个元素的总和 = 3 + 6 + 13 = 22
Y 是第二个元素的总和 = 15 + 8 + 7 =30
请注意,列表的元素是交错的,而不是连接的,我必须在工作人员上循环并每次取一个元素。
我的代码是这样开始的:
def mergeAnalysis(outPath, nbWorkers):
for i in range(nbWorkers):
with open(os.path.join(outPath, "ERROR_TEMP{}.p".format(i)), 'rb') as fichier:
dictlist.append(pickle.load(fichier))
dictlist 是字典列表。
如果有人有这样做的想法? 非常感谢您的帮助
编辑:我试图提取字典的值:
for j in range(0,len(dictlist)):
for k1 in dictlist[j].keys():
a = dictlist[j].get(k1)
【问题讨论】:
-
您的问题是什么?没有人愿意为您调试代码。
-
我的问题是如何正确地做到这一点,我的代码不需要调试,因为它只是一个开始,加载我的泡菜文件并创建字典列表。
-
您提供的代码并不真正相关。您尝试过什么来实际解决根据您的要求合并字典的问题?可能有成千上万个类似的问题。您在研究中发现了什么?请参阅How to Ask。
-
不要在 cmets 中发布代码,它完全不可读。编辑您的问题并将其添加到那里。
标签: python dictionary merge pickle