【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并集的大小的比值,定义如下:
你这里只要相似度为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