Убедитесь, что одинаковые имена файлов всегда будут совпадать? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть два списка: это:

список1

['C:\\Users\\user\\Desktop\\programs1\\merge\\AST\\AST.shp',
 'C:\\Users\\user\\Desktop\\programs1\\merge\\ASTI\\ASTI.shp',
 'C:\\Users\\user\\Desktop\\programs1\\merge\\ASTO\\ASTO.shp']

и это:

список2

['C:\\Users\\user\\Desktop\\programs\\merge\\AST\\AST.shp',
 'C:\\Users\\user\\Desktop\\programs\\merge\\ASTI\\ASTI.shp',
 'C:\\Users\\user\\Desktop\\programs\\merge\\AWE\\AWE.shp',  #THIS IS EXTRA
 'C:\\Users\\user\\Desktop\\programs\\merge\\ASTO\\ASTO.shp']

Тогда zip:

final = [(f,s) for f,s in zip(list1,list2)]
final

Как обеспечить совпадение пар с соответствующим именем в другом списке после почтового индекса?

Может быть, мы сопоставим их с предыдущей папкой?Нравится:

if list1[0].split('\\')[-2] == list2[0].split('\\')[-2]:
      final = [(f,s) for f,s in zip(list1,list2)]
      final

1 Ответ

0 голосов
/ 21 ноября 2018

Надеюсь, я правильно понимаю, что вы хотите получить пары, которые совпадают (например, на основе предпоследней папки, как в вашем примере - вы можете настроить на желаемое условие).То, что я сделал бы тогда, было бы примерно так:

dict1 = {path.split('\\')[-2]: path for path in list1}
dict2 = {path.split('\\')[-2]: path for path in list2}
common = set(dict1) & set(dict2)
pairs = [(dict1[element], dict2[element]) for element in common]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...