(澳门正规博彩十大网站) json中找到相关联数字的程序?

str={Tom:1,2,3,Jack:1,5,9,Bob:2,Li:2,7} 在Tom的数字中发现有1,那就要把Jack的5,9给Tom;
在Tom的数字中发现有2,那就要把Li的7给Tom,Bob只有一个2,没有其他数字,没法给;
在Tom的数字中发现有3,Jack、Bob、Li都没有3,没法给;
...
最后得出:
str_related={Tom:5,9,7,Jack:2,3,Bob:1,3,7,Li:1,3}

不知道描述清楚没?
真实的情况:人员很多,至少10k,数字至少100k
怎么高效写这段程序?谢谢

算法可以归纳为集合运算,可转化为整数的位运算,达到高效目的。 说明如下图:

可以如此拆分

const objLast = {}
const tempTom = []
const tom = str[Tom].solit,
tom.mapitem, i=> { forlet key in str { ifkey != Tom { tempTom.concactgetLastOfArrstr[key].split,, item } }
}
objLast.Tom = tempTom.join function getLastOfArrarr, removeKey { return arr.filteritem, index => { item != removeKey } }

因为不知道你这些参数是不是确定的,所以大概这么写

后续才发现 你要的是php写法,我上面是js写法 ,可以看看思路~~~~

泻药~

python3 set

data = {Tom:{1,2,3},Jack:{1,5,9},Bob:{2},Li:{2,7}} rslt = {}
for k in data: s=set for x in data: if k!=x: s |= data[k]&data[x] and data[x]-data[k] rslt[k] = s printrslt

结果:

{Jack: {2, 3}, Tom: {9, 5, 7}, Li: {1, 3}, Bob: {1, 3, 7}}

优化~

先计算一遍,保存有效集合,避免不必要的重复计算。

data = {Tom:{1,2,3},Jack:{1,5,9},Bob:{2},Li:{2,7}} valid = {} # 有效值
for k in data: for x in data: key = %s-%s%x, k if k != x and key not in valid and data[k] & data[x] and data[x] - data[k] : valid[key] = data[x] - data[k] rslt = {}
for k in data: s=set for x in data: s |= valid.get%s-%s%x, k,set rslt[k] = s printrslt

发表评论

电子邮件地址不会被公开。 必填项已用*标注