标签: set-operations

Python中的dict对象联合

你如何计算dictPython 中两个对象的并集,其中(key, value)结果中存在一对iff keyindict(除非有重复)?

例如,{'a' : 0, 'b' : 1}{'c' : 2}的结合{'a' : 0, 'b' : 1, 'c' : 2}.

您最好不要修改任何输入dict.这有用的示例:获取当前范围内所有变量及其值的字典

python dictionary associative-array idioms set-operations

114
推荐指数
4
解决办法
6万
查看次数

在Swift数组上设置操作(union,intersection)?

我是否可以使用任何标准库调用来对两个数组执行set操作,或者自己实现这样的逻辑(理想情况下尽可能功能和高效)?

functional-programming set-operations swift

94
推荐指数
2
解决办法
5万
查看次数

`**'在表达式'dict(d1,**d2)中是什么意思?

我对以下python表达式很感兴趣:

d3 = dict(d1, **d2)
Run Code Online (Sandbox Code Playgroud)

任务是将2个词典合并为第三个词典,上面的表达式完成任务就好了.我对**运算符感兴趣,它对表达式究竟做了什么.我认为**是功率运算符,还没有看到它在上面的上下文中使用过.

完整的代码片段是这样的:

>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
>>> print d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)

python syntax dictionary operators set-operations

43
推荐指数
3
解决办法
7960
查看次数

在C#中找到两个集合的补充的最快方法

我有两个类型ICollection<MyType>称为c1和的集合c2.我想找到的一组是在项目c2中没有的c1,在争取平等的启发是Id物业MyType.

在C#(3.0)中执行此操作的最快方法是什么?

.net c# linq complement set-operations

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

如何在PostgreSQL中有效地设置减去连接表?

我有以下表格:

  • work_units - 自我解释
  • workers - 自我解释
  • skills - 如果您想要工作,每个工作单位都需要一些技能.每个工人都精通各种技能.
  • work_units_skills - 加入表
  • workers_skills - 加入表

工作人员可以请求下一个适当的免费最高优先级(无论这意味着)分配给她的工作单元.


目前我有:

SELECT work_units.*
FROM work_units
-- some joins
WHERE NOT EXISTS (
        SELECT skill_id
        FROM work_units_skills
        WHERE work_unit_id = work_units.id

        EXCEPT

        SELECT skill_id
        FROM workers_skills
        WHERE worker_id = 1 -- the worker id that made the request
      )
-- AND a bunch of other conditions
-- ORDER BY something complex
LIMIT 1
FOR UPDATE SKIP LOCKED;
Run Code Online (Sandbox Code Playgroud)

这种情况使查询慢了8-10倍.

是否有更好的方式来表达work_units技能应该是技能的一部分workers或改善当前查询的东西?


更多背景: …

sql postgresql performance set-operations relational-division

19
推荐指数
3
解决办法
864
查看次数

集合中的union()和union_update()之间的区别是什么?

Python集具有以下方法:

s.union(t)  s | t   new set with elements from both s and t

s.update(t) s |= t  return set s with elements added from t
Run Code Online (Sandbox Code Playgroud)

同样,还有这些:

s.intersection_update(t)    s &= t  return set s keeping only elements also found in t

s.intersection(t)   s & t   new set with elements common to s and t
Run Code Online (Sandbox Code Playgroud)

等等,适用于所有标准关系代数运算.

所以......问题是,这里究竟有什么区别?我看到它说update()版本返回s而不是新集,但如果我写x = s.update(t),这是否意味着id(x) == id(s)?他们现在引用同一个对象吗?

我的意思是,我真的不明白为什么要实现这两套方法.它似乎没有添加任何重要的功能.

python set set-operations

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

包含对象的两个数组的差异和交集

我有两个数组list1,list2其中包含具有某些属性的对象; userId是Id还是唯一属性:

list1 = [
    { userId: 1234, userName: 'XYZ'  }, 
    { userId: 1235, userName: 'ABC'  }, 
    { userId: 1236, userName: 'IJKL' },
    { userId: 1237, userName: 'WXYZ' }, 
    { userId: 1238, userName: 'LMNO' }
]

list2 = [
    { userId: 1235, userName: 'ABC'  },  
    { userId: 1236, userName: 'IJKL' },
    { userId: 1252, userName: 'AAAA' }
]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种简单的方法来执行以下三个操作:

  1. list1 operation list2 应该返回元素的交集:

    [
        { userId: 1235, userName: 'ABC'  },
        { userId: 1236, userName: 'IJKL' …
    Run Code Online (Sandbox Code Playgroud)

javascript arrays set-difference set-operations set-intersection

16
推荐指数
4
解决办法
2万
查看次数

R中列表中交叉向量的联合

我有一个向量列表如下.

data <- list(v1=c("a", "b", "c"), v2=c("g", "h", "k"), 
             v3=c("c", "d"), v4=c("n", "a"), v5=c("h", "i"))
Run Code Online (Sandbox Code Playgroud)

我正在努力实现以下目标

1)检查任何矢量是否相互交叉.

2)如果找到相交的向量,得到它们的联合.

所以期望的输出是

out <- list(v1=c("a", "b", "c", "d", "n"), v2=c("g", "h", "k", "i"))
Run Code Online (Sandbox Code Playgroud)

我可以得到一组相交集的并集,如下所示.

 Reduce(union, list(data[[1]], data[[3]], data[[4]]))
 Reduce(union, list(data[[2]], data[[5]])
Run Code Online (Sandbox Code Playgroud)

如何首先识别交叉向量?有没有办法将列表划分为相交矢量组列表?

更新

这是使用data.table的尝试.获得所需的结果.但是对于大型列表仍然很慢,就像在这个示例数据集中一样

datasets. 
data <- sapply(data, function(x) paste(x, collapse=", "))
data <- as.data.frame(data, stringsAsFactors = F)

repeat {
  M <- nrow(data)
  data <- data.table( data , key = "data" )
  data <- data[ , list(dataelement = unique(unlist(strsplit(data , ", …
Run Code Online (Sandbox Code Playgroud)

r list lapply set-operations data.table

15
推荐指数
4
解决办法
1992
查看次数

如何在C#中对数组执行set减法?

给定C#中的两个数组,执行set减法的最简单方法是什么?显然,这在Ruby中很容易实现.基本上我只想删除数组a中数组中的元素b:

string[] a = new string[] { "one", "two", "three", "four" };
string[] b = new string[] { "two", "four", "six" };
string[] c = a - b; // not valid
Run Code Online (Sandbox Code Playgroud)

c应该相等{ "one", "three" }.b - a会屈服{ "six" }.

c# arrays set-operations

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

试图理解sql查询中的"除了所有"

我遇到了这个例子,我不明白这意味着什么.

(SELECT drinker FROM Frequents)
     EXCEPT ALL
(SELECT drinker FROM Likes);
Run Code Online (Sandbox Code Playgroud)

关系:频繁(饮酒者,酒吧),喜欢(饮酒者,啤酒)

在这种情况下,ALL会做什么?结果与下面的查询有何不同?

(SELECT drinker FROM Frequents)
     EXCEPT
(SELECT drinker FROM Likes);
Run Code Online (Sandbox Code Playgroud)

sql set-difference set-operations intersect set-intersection

7
推荐指数
3
解决办法
1万
查看次数