标签: set-intersection

如何交叉字典?

我已经很长时间没有学习Python了,而且有点生疏,但对于第一个问题,我正在使用一本字典,需要将它相交以返回键和值。例如,我要输入

a = {1:'a1', 2.5:'a2', 4:'a3'}
b = {1:'a1', 3:'a2',  5:'a4'}
Run Code Online (Sandbox Code Playgroud)

如果我进入c = intersect(a,b),我希望它返回{1:'a1'},但我只能返回{'a1'}

到目前为止我的代码是:

def intersect(a, b):
    for i in a:
        if j in b:
            if a[i]==b[i]:
                return ({i})
        else:
            return {}
Run Code Online (Sandbox Code Playgroud)

python dictionary set-intersection

1
推荐指数
2
解决办法
6139
查看次数

演示集合比数组更快?

目标是找到两个数组的交集。我知道你应该使用集合来获得更快的运行时间。然而,在我的笔记本中,我惊讶地发现使用 set 方法我的运行时间并没有更快。(89 毫秒(阵列)与 220 毫秒(组))。我的代码有问题还是我误解了?

A = range(50,1000000)
B = range(-1000000,60)

%%time
# O(m*n)?
def intersection(A, B):
  array = []
  for i in A:
    if i in B:
      array.append(i)
  return array

intersection(A,B)

%%time
# O(1)?
def intersection(A, B):
  set_a = set(A)
  set_b = set(B)
  return [i for i in set_a if i in set_b]
  # return set_a.intersection(set_b)

intersection(A,B)
Run Code Online (Sandbox Code Playgroud)

python arrays set set-intersection

1
推荐指数
1
解决办法
42
查看次数

MATLAB制作相交得更快

让两个{A,B}大小的数组1xN

我想找到相同指数的案例数量

条件A(ii)==1 & B(ii)==0得到满足.

我试过了

casess= intersect( find(A==1),find(B==0 ))
Run Code Online (Sandbox Code Playgroud)

但这很慢.

我相信这是因为intersect检查每个成员是否是另一个成员的成员,但我仍然在寻找解决我的小问题的最快解决方案.

optimization matlab set-intersection

0
推荐指数
1
解决办法
284
查看次数

Python 3.4设置交集

我试图理解为什么我的交集在运行此代码时不返回空列表.

n = ([1,2,3,4,5],[3,4,5,6],[5,6,7],[7,8,9,10,11,12],[10,22,33,44,45])
w = set(n[0]).intersection(*n[:1])
print(w)
#Returns (1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

但是,这会返回正确的集合

n = ([1,2,3,4,5],[3,4,5,6],[5,6,7],[7,8,9,10,11,12],[10,22,33,44,45])
w = set(n[0]).intersection(*n)
print(w)
#Returns empty set.
Run Code Online (Sandbox Code Playgroud)

这个问题给出了两个正确的结果:
Python - 多个列表的交叉?

当我将第一组与剩余列表进行比较时,为什么我得不到正确的结果?

python set-intersection python-3.x

0
推荐指数
1
解决办法
519
查看次数

寻找不同大小的矩阵中的共同元素

我有两个不同大小的矩阵,例如:

A = [10 12 15 16 17 43 77];
B = [10 11 15 20 43 55 222 90 86];
Run Code Online (Sandbox Code Playgroud)

我想比较这两个矩阵以找出相同的值并将它们存储在一个新变量中.结果应如下所示:

C = [10 15 43];
Run Code Online (Sandbox Code Playgroud)

因为我是MATLAB的新用户,如果有人给我关于这个问题的想法会很好.提前致谢.

matlab set-intersection

0
推荐指数
1
解决办法
534
查看次数

为什么 std::set_intersection 不起作用?

我有以下代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int main() {
// your code goes here
int t;
cin>>t;
while(t--)
{
    string a;
    string b;
    cin>>a;
    cin>>b;
    vector<char> v1(a.begin(),a.end());
    vector<char> v2(b.begin(),b.end());

    sort(v1.begin(),v1.end());
    sort(v2.begin(),v2.end());
    vector<char> c;
    auto ls = set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),c.begin());
    cout<<"hello"<<endl;
    cout<<ls-c.begin()<<endl;
    cout<<c.size()<<endl;

}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

在 set_intersection 线之后没有打印任何内容,甚至没有与相交线无关的“hello”,为什么?

c++ stl set-intersection

0
推荐指数
1
解决办法
164
查看次数

我想使用 C++ 执行多集交集

我正在使用std::set<int>多集类std::multiset<int>来执行一些集合操作 - 并集、交集等。问题是我必须在两个多集之间执行交集,这样我也可以获得重复值。当我将它与简单集合(而不是多集合)一起使用时,交集工作正常,例如

Set1={1,2,3,4,5,6}
Set2={4,5,6,7,8,9}
然后
std::set_intersection 给我一个正确的结果,即 {4,5,6}

但是,如果我有一个多重集

多组1{1,1,2,2,3,3,4,4,5,5,6,6}
多组2{4,4,5,5,6,6,7,7,8, 8,9,9}

我再次使用 std::set_intersection 它再次给我结果 {4,5,6}

这是不正确的,因为实际的交集是 {4,4,5,5,6,6}

尽管我使用多重集来保存交集的结果,但我仍然得到错误的答案。

谁能告诉我如何解决这个问题。

c++ set multiset set-intersection

-1
推荐指数
1
解决办法
4091
查看次数