2015-03-13 4 views
0

У меня есть два комплектаСравнить строки со специальной characetr в конце

a[i]={'[email protected]','bb','[email protected]'} 
b[j]={'aaa','[email protected]','[email protected]'} 

Я хочу, чтобы сравнить каждую строку в a[i] с b[j] таким образом, что, если оба строк одинаковы, и они имеют особый характер в конце, то он печатает " равный», как [email protected] в этих списках одинаковы, если строки равны, но один из них имеют особый характер, то он отображает„Не полностью согласованный“

+1

У вас есть * наборы *, а не списки. –

+0

да так, как сравнивать с помощью наборов – abd

+0

@abd, не могли бы вы указать, какую строку вы хотите сравнить с другой строкой? Вы видите, что проблема заключается в том, что у вас есть наборы вместо списков, потому что наборы не упорядочены, и нет способа сказать, какой элемент первого набора вы хотите сравнить с каким элементом второго набора. – bpgergo

ответ

1

Пример со списком:

a=['[email protected]','bb','[email protected]'] 
b=['aaa','[email protected]','[email protected]'] 

index = 0 
print "ordered comparison:" 
for i,j in zip(a,b): 
    if i == j: 
     print str(index) + ": Equal" 
    elif i.replace("@","") == j.replace("@",""): 
     print str(index) + ": Not completely Matched" 
    else: 
     print str(index) + ": Different" 
    index+=1 

print "\nunordered comparison:" 
for x in a: 
    for y in b: 
     if x == y: 
      print x,y + " are Equal" 
     elif x.replace("@","") == y.replace("@",""): 
      print x,y + " Not completely Matched" 
     else: 
      print x,y + " Different" 

Выход:

enter image description here

+0

Но OP использует * sets *, которые не имеют порядка и не могут просто быть заархивированы вместе. Кроме того, где говорится в вопросе, что элементы могут быть в паре так аккуратно? –

+0

Квестин говорит список, а использование a [i] и b [j] показывает математическую нотацию. Вопрос был очерчен, когда кто-то прокомментировал множество. Я уже пробовал это решение к тому времени. –

+0

Это был кто-то; ОП подтвердил, что у них есть наборы. –

0

Sets легко по сравнению поэлементно:

>>> a={'[email protected]','bb','[email protected]'} 
>>> b={'aaa','[email protected]','[email protected]'} 
>>> c=a.copy() 
>>> a-b 
set(['[email protected]', 'bb']) 
>>> a-c 
set([]) 

>>> d={"Product invoice","product verification","product [email protected]"} 
>>> e= {"Product invoice","product [email protected]","product [email protected]"} 
>>> d-e 
set(['product verification']) 
>>> d^e 
set(['product [email protected]', 'product verification']) 

Затем используйте truthiness пустого или непустой набор, чтобы получить то, что вы хотите:

>>> 'not matched' if a-b else 'matched' 
'not matched' 
>>> 'not matched' if a-c else 'matched' 
'matched' 
Смежные вопросы