如何比较这两个长度不等的元组的python元组,并在比较的基础上输出另一个元组?

How to compare these 2 python tuple of tuples of unequal length and output another tuple based on the comparison?

我有这个三元组;

1
Tup1= ( ('AAA', 2), ('BBB', 3) )

我还有一个元组;

1
Tup2 = ('AAA', 'BBB', 'CCC', 'DDD')

我想比较一下Tup1Tup2。基于比较,我想创建另一个像这样的元组;

1
OutputTup = ( ('AAA', 2), ('BBB', 3), ('CCC', 0), ('DDD', 0) )

逻辑是这样的。查看tup2中的每个元素,然后在tup1中查找匹配的元素。如果tup1中有匹配的元素(例如"aaa"),请复制到outputtup("aaa",2)。如果没有匹配的元素(例如"ccc"),则指定值0并追加到outputtup("ccc",0)。

如何在python2.7中实现这一点?谢谢。


这也适用于所需的输出:

1
2
3
4
5
6
7
8
tup1 = ( ('AAA', 2), ('BBB', 3) )
tup2 = ('AAA', 'BBB', 'CCC', 'DDD')
dic = dict( tup1 )
for tri in tup2:
    dic[tri] = dic.get(tri,0)

print tuple(dic.items())
#(('AAA', 2), ('BBB', 3), ('CCC', 0), ('DDD', 0))


请修改我的答案。我不知道如何检查类型。如果有人知道,请随意编辑我的答案。

1
2
3
4
5
6
7
8
from itertools import izip,izip_longest
Tup1= ( ('AAA', 2), ('BBB', 3) )
Tup2 = ('AAA', 'BBB', 'CCC', 'DDD')
lis=[ i if type(i[0])==type(0) else i[0] for i in list(izip_longest(Tup1, Tup2 , fillvalue=0))]



#output [('AAA', 2), ('BBB', 3), (0, 'CCC'), (0, 'DDD')]