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') |
我想比较一下
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')] |