сравнить два файла - PullRequest
3 голосов
/ 06 мая 2011

У меня есть два файла в этом формате

file1= filename val1 val2
file2= filename val3 val4

Я хочу сравнить имена файлов, и если они имеют одинаковые имена, я хочу получить третий файл, подобный этому -

filename val1 val2 val3 val4

Я выбираю имя файла из file1 и перебираю file2, чтобы посмотреть, получу ли я его.Затем ищите указатель на вершину file2 для следующего имени файла ... есть ли более эффективный способ сделать это?

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

Звучит так, будто вы ищете стандартную команду join (не Python, а стандартная утилита оболочки Unix). Вот фрагмент страницы руководства в системе (которая, кажется, содержит больше подробностей, чем справочная страница Linux для объединения ):

        join phonedir names

        If the phonedir file contains the following names:

        Adams A.        555-6235
        Dickerson B.    555-1842
        Erwin G.        555-1234
        Jackson J.      555-0256
        Lewis B.        555-3237
        Norwood M.      555-5341
        Smartt D.       555-1540
        Wright M.       555-1234
        Xandy G.        555-5015

        and the names file contains these names and department numbers:

        Erwin           Dept. 389
        Frost           Dept. 217
        Nicholson       Dept. 311
        Norwood         Dept. 454
        Wright          Dept. 520
        Xandy           Dept. 999

        the join command displays:

        Erwin G.        555-1234        Dept. 389
        Norwood M.      555-5341        Dept. 454
        Wright M.       555-1234        Dept. 520
        Xandy G.        555-5015        Dept. 999
2 голосов
/ 06 мая 2011

создать диктовку file2[filename] = (val3, val4). Вы можете создать его один раз, затем время поиска для заданного имени файла, которое вы получаете из файла file1, занимает постоянное время (т.е. более или менее не зависит от размера файла file2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...