如何比较这两个不等长的元组的python元组,并根据比较输出另一个元组?

时间:2014-06-27 07:25:48

标签: python python-2.7 tuples

我有这个元组元组;

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

我有另一个元组;

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

我想比较Tup1Tup2。根据比较,我想创建另一个看起来像这样的元组元组;

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

逻辑是这样的。查看Tup2中的每个元素,然后在Tup1中查找匹配元素。如果Tup1中存在匹配元素(示例' AAA'),请复制到OutputTup(' AAA',2)。如果没有匹配的元素(示例' CCC'),则将值0赋值并附加到OutputTup(' CCC',0)。

如何在Python 2.7中完成?感谢。

2 个答案:

答案 0 :(得分:3)

这也适用于您想要的输出:

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)

在某种程度上。请编辑我的答案。我无法弄清楚如何检查类型。如果有人知道随时可以编辑我的答案

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')]