首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典减法

字典减法
EN

Stack Overflow用户
提问于 2021-11-01 09:07:28
回答 1查看 57关注 0票数 0

我在一本字典里有两本字典:

代码语言:javascript
复制
d = {'A': {}, 'B': {}}

其中:

代码语言:javascript
复制
A = {'key1': [[3],[ ],[ ], [ ]], 'key2': [[1,2,3], [ ],[4,5,6],[]], 'key4:' ...}

因此,一个Dictonary,其列表的长度为4(以下为n),其中包含在某些点上的其他数据列表,而这些数据的长度并不完全相同。

和B:

代码语言:javascript
复制
B = {'key1': [[ ],[ ], [ ], [ ]], 'key2': [[7,8,9], [ ],[10,11,12],[]], 'key4:' ...}

因此,这两个键的长度在单键的内容上是相同的,对键的命名也是一样的。现在我想从B中减去A,这样长度为n的Akey1从Bkey1中减去长度为n的元素,然后是key2等等。

新字典

代码语言:javascript
复制
C = {'key1':[Diff1,Diff2,Diff3,Diffn], 'key2': ...}

所以差别是如果没有两个数字的话。

因此,对于示例中的key2:

代码语言:javascript
复制
C = {...'key2': [[1-7,8-2,3-9],[ ], [4-10,5-11,6-12], []], ...}

(当然是计算差额,而不是显示)

然后是二叉树

代码语言:javascript
复制
D = {'key1': [mean(C['key1']), 'key2': mean(C['key2']),...} 

必须创建C键的平均值。

不幸的是,我还没有那么多的经验,迪奥纳里,所以我将感谢任何提示。

我编写了一个代码来对值进行平均值,但是这样我就跳过了差异(这是我需要的),它还会对列表中的空列表产生警告。

代码语言:javascript
复制
for key, value in d['A'].items():
        d['A'][key] = [(np.array(i).mean()) for i in value if not int(len(i)) ==0]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-01 10:01:16

通过从B中减去A并使用以下代码将其存储到C中,我设法获得了这种差异

代码语言:javascript
复制
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

这是我从你的问题中拿来的假设字典,用来测试它是否有效。

代码语言:javascript
复制
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为空时,它抛出一个错误,该错误可以使用异常处理来处理。

--这是如何处理异常的方法:

代码语言:javascript
复制
try:
   outer.append(d['B'][key][i][j]-d['A'][key][i][j])
except:
   outer.append([])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69794736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档