Python合并集部分

时间:2016-03-23 15:00:29

标签: python set

我有一组元组(set1),其中每个元组都是(somename1,somename2,Number)。数字表示我们看到somename1,somename2的次数。 我想将它与一个不同的集合(set2)合并,其中somename1,somename2可能在集合中,并相应地更新Number。 现在,出于显而易见的原因,set1& set2返回一个空集。如何有效地更新set1?

示例数据= Set1 = {('soda','coca cola',5), ('chocolate','mars',13)}

2 个答案:

答案 0 :(得分:2)

您可以使用计数器:

>>> Set1 = {('soda','coca cola'): 5}
>>> Set2 = {('soda','coca cola'): 3, ('chocolate','mars'): 10}
>>> {k: Set1[k] + Set2.get(k, 0) for k in Set1}

如果您不想在Set2中添加密钥,如果它们不在Set1中,您可以使用dict理解:

 var push = PushNotification.init({
          android: {
            senderID: "gcm_id",
            icon: "ic_notification",
            iconColor: "black"
          }
        });

答案 1 :(得分:0)

以下是一个示例,如果您想使用集合进行输入,并且只对任何格式的结果数据感兴趣(看起来我最近使用defaultdict):< / p>

from itertools import chain
from collections import defaultdict

s1 = set((
    ('a', 'b', 1), ('c', 'd', 2)
))
s2 = set((
    ('a', 'b', 2), ('c', 'd', 3), ('e', 'f', 4)
))

s3 = defaultdict(int)

for name1, name2, count in chain(s1, s2):
    s3[name1, name2] += count

for (name1, name2), total_count in s3.items():
    print(name1, name2, total_count)

打印:

c d 5
e f 4
a b 3