我在一本字典里有两本字典:
d = {'A': {}, 'B': {}}其中:
A = {'key1': [[3],[ ],[ ], [ ]], 'key2': [[1,2,3], [ ],[4,5,6],[]], 'key4:' ...}因此,一个Dictonary,其列表的长度为4(以下为n),其中包含在某些点上的其他数据列表,而这些数据的长度并不完全相同。
和B:
B = {'key1': [[ ],[ ], [ ], [ ]], 'key2': [[7,8,9], [ ],[10,11,12],[]], 'key4:' ...}因此,这两个键的长度在单键的内容上是相同的,对键的命名也是一样的。现在我想从B中减去A,这样长度为n的Akey1从Bkey1中减去长度为n的元素,然后是key2等等。
新字典
C = {'key1':[Diff1,Diff2,Diff3,Diffn], 'key2': ...}所以差别是如果没有两个数字的话。
因此,对于示例中的key2:
C = {...'key2': [[1-7,8-2,3-9],[ ], [4-10,5-11,6-12], []], ...}(当然是计算差额,而不是显示)
然后是二叉树
D = {'key1': [mean(C['key1']), 'key2': mean(C['key2']),...} 必须创建C键的平均值。
不幸的是,我还没有那么多的经验,迪奥纳里,所以我将感谢任何提示。
我编写了一个代码来对值进行平均值,但是这样我就跳过了差异(这是我需要的),它还会对列表中的空列表产生警告。
for key, value in d['A'].items():
d['A'][key] = [(np.array(i).mean()) for i in value if not int(len(i)) ==0]发布于 2021-11-01 10:01:16
通过从B中减去A并使用以下代码将其存储到C中,我设法获得了这种差异
for key, value in d['A'].items():
difference=[]
for i in range(len(d['A'][key])):
outer=[]
for j in range(len(d['A'][key][i])):
outer.append(d['B'][key][i][j]-d['A'][key][i][j])
difference.append(outer)
d['C'][key]=difference这是我从你的问题中拿来的假设字典,用来测试它是否有效。
d={
'A' : {'key1': [[3],[2],[1], [5]], 'key2': [[1,2,3], [2],[4,5,6],[2]]},
'B' : {'key1': [[5],[ 1],[8], [9]], 'key2': [[2,3,11], [11],[8,2,22],[4]]},
'C':{}
}并使用print语句检查输出。我想你已经弄明白了,所以就这么多了。
P.s:当来自A的列表元素为空时,您将得到一个空列表作为输出,而当B为空时,它抛出一个错误,该错误可以使用异常处理来处理。
--这是如何处理异常的方法:
try:
outer.append(d['B'][key][i][j]-d['A'][key][i][j])
except:
outer.append([])https://stackoverflow.com/questions/69794736
复制相似问题