【Python】如何判断相同元素不同顺序组成的不同数组是相同的?

比如要根据传递的数组,如果里面的元素相同(顺序可能不同),转为字符串作为redis 的 key

$a=['a','b','c'];

$b=['b','a','c'];

$c=['c','b','a'];

$d=['c','b','a','d'];

function test($arr){

// do sth

$tmp = doSth($arr);

$redis->set(implode(',',$tmp),time());

}

function doSth($arr){

sort($arr);//暂时可以解决

return $arr;

}

//$a,$b,$c都是 a b c 组成的,就可以把他们当做一个 key 也就是 doSth($a) doSth($b) doSth($c) 返回值相同,$d返回不同

回答

了解一下这两个方法,并合理利用。

PHP: array_intersect - Manual - http://php.net/manual/zh/func...
PHP: array_diff - Manual - http://php.net/manual/zh/func...

楼上其实有人已经回答到点子上了,用array_intersect取交集,
其实就是个相似度计算的问题 ,昨天我写了个文章,讲的是利用文章Tag推荐相似文章,就用到这了个方法,
jaccard相似度

给定两个集合A,B,Jaccard 系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:

【Python】如何判断相同元素不同顺序组成的不同数组是相同的?

你这里只要相似度为1 就证明两个数组里的元素是完全相同的

创建一个集合set 遍历每一个数组,向set集合添加,得到的就是结果

python">a=['a','b','c']

b=['b','a','c']

c=['c','b','a']

d=['c','b','a','d']

ret = list(set(a).intersection(set(b)))

key去做排序,这里为什么要说key呢,这个key代表你认为他们相同的条件,别用name去排序,比较的时候用value

当然上面的方法不骚。两个排序,加一个遍历比较。

骚一点的。遍历其中一个。放入对象里面,组成key:true的形式。然后遍历另一个。判断在存在不。等于遍历两次。

function doSth($arr){

sort($arr);//暂时解决

return $arr;

}

https://stackoverflow.com/que...

如果资源充足,则分别排序后依次比较即可。

以上是 【Python】如何判断相同元素不同顺序组成的不同数组是相同的? 的全部内容, 来源链接: utcz.com/a/78616.html

回到顶部