我有这个元组元组;
Tup1= ( ('AAA', 2), ('BBB', 3) )
我有另一个元组;
Tup2 = ('AAA', 'BBB', 'CCC', 'DDD')
我想比较Tup1
和Tup2
。根据比较,我想创建另一个看起来像这样的元组元组;
OutputTup = ( ('AAA', 2), ('BBB', 3), ('CCC', 0), ('DDD', 0) )
逻辑是这样的。查看Tup2中的每个元素,然后在Tup1中查找匹配元素。如果Tup1中存在匹配元素(示例' AAA'),请复制到OutputTup(' AAA',2)。如果没有匹配的元素(示例' CCC'),则将值0赋值并附加到OutputTup(' CCC',0)。
如何在Python 2.7中完成?感谢。
答案 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')]