比方说我们有两套:
T. Okai
我希望在第一个元素上产生并集
t = {('b', 3), ('a', 2)}
r = {('b', 4), ('c', 6)}
如果两个位置都有重复的符号(上面的示例为“ b”),则应保留第一个列表的元素。 谢谢。
答案 0 :(得分:6)
只需:
t = {('b', 3), ('a', 2)}
r = {('b', 4), ('c', 6)}
d = dict(r)
d.update(t)
u = set(d.items())
print(u)
输出:
{('c', 6), ('a', 2), ('b', 3)}
答案 1 :(得分:2)
短一点的版本:
s = dict((*r, *t))
set(s.items())
输出:
{('a', 2), ('b', 3), ('c', 6)}
答案 2 :(得分:1)
for el in r:
if not el[0] in [x[0] for x in t]:
t.add(el)
t
{('a', 2), ('b', 3), ('c', 6)}
答案 3 :(得分:0)
设置相交无法做到这一点。两个对象相等或不相等。由于您的对象是元组,cardImage.Image = UIImage
和(b, 3)
不相等,因此您无法更改它。
最明显的方法是创建自己的类并重新定义相等性,例如
(b, 4)
并创建此类对象集。
答案 4 :(得分:0)
这是我基于理解的一线式解决方案:
t = {('b', 3), ('a', 2)}
r = {('b', 4), ('c', 6)}
result = {*t, *{i for i in r if i[0] not in {j[0] for j in t}}}
print(result) # {('b', 3), ('a', 2), ('c', 6)}
使用转换为字典来消除重复项,您也可以这样做,这是非常聪明的解决方案,恕我直言:
t = {('b', 3), ('a', 2)}
r = {('b', 4), ('c', 6)}
result = {(k,v) for k,v in dict((*r,*t)).items()}
print(result) # {('b', 3), ('a', 2), ('c', 6)}
答案 5 :(得分:0)
使用chain的替代方法:
from itertools import chain
t = {('b', 3), ('a', 2)}
r = {('b', 4), ('c', 6)}
result = set({k: v for k, v in chain(r, t)}.items())
输出
{('b', 3), ('a', 2), ('c', 6)}