Если у меня есть два набора данных с одинаковым количеством значений, каков наилучший подход к поиску значений в наборах, которые не совпадают? - PullRequest
0 голосов
/ 19 июня 2019

Например, допустим, у меня есть эти два набора данных:

Set1:
Host: 123 Name: Name1 Value:1234 Date: 06/19/2019 School: MIT Color: Black

Set2:
Host: 123 Name: Name2 Value:1234 Date: 06/19/2019 School: Harvard Color: Black

Каков наилучший подход в python для сравнения этих двух списков и возврата результата, подобного следующему:

Результат

Host 123 in set 1 and set 2 do not match!
Set1-Name: Name1
Set2-Name: Name2
Set1-School: MIT
Set2-School: Harvard

Любая помощь будет отличной, большое спасибо

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Вы можете прочитать набор данных и добавить каждое значение в список построчно. Это выделит любые различия между двумя списками.

После оператора if вы можете отформатировать его так, как вам хочется, чтобы он был более читабельным.

for x, y in zip(Set1, Set2):
    if x != y:
        print(x, y)
0 голосов
/ 19 июня 2019
set1 = '''
Host: 123
Name: Name1
Value:1234
Date: 06/19/2019
School: MIT
Color: Black'''

set2 = '''
Host: 123
Name: Name2
Value:1234
Date: 06/19/2019
School: Harvard
Color: Black'''

import re

for g1, g2 in zip(re.findall(r'(.*?):\s*(.*?)$', set1, flags=re.M), \
                  re.findall(r'(.*?):\s*(.*?)$', set2, flags=re.M)):
    if g1[1] == g2[1]:
        print('{}: {}'.format(g1[0], g1[1]))
    else:
        print('Set1-{}: {}'.format(g1[0], g1[1]))
        print('Set2-{}: {}'.format(g2[0], g2[1]))

Печать:

Host: 123
Set1-Name: Name1
Set2-Name: Name2
Value: 1234
Date: 06/19/2019
Set1-School: MIT
Set2-School: Harvard
Color: Black
...