fork download
  1. from operator import itemgetter
  2.  
  3. list1 = [
  4. {'name': 'saeed1-gr1', 'id': 1},
  5. {'name': 'pl1-saeed1', 'id': 1},
  6. {'name': 'saeed11-gr2', 'id': 8},
  7. {'name': 'pl1-saeed2', 'id': 2},
  8. {'name': 'saeed3-gr2', 'id': 8},
  9. {'name': 'saeed5-gr1', 'id': 3},
  10. {'name': 'pl1-saeed7', 'id': 1},
  11. {'name': 'saeed15-gr1', 'id': 1},
  12. {'name': 'ps1-saeed15', 'id': 1},
  13. {'name': 'ps1-saeed11', 'id': 1},
  14. {'name': 'saeed8-gr3', 'id': 1},
  15. ]
  16.  
  17. dupes = {}
  18. for name, id in map(itemgetter('name', 'id'), list1):
  19. dupes.setdefault(
  20. (next(token for token in name.split('-') if 'saeed' not in token), id), []
  21. ).append(name)
  22. for (_, id), names in dupes.items():
  23. if len(names) > 1:
  24. print(f'names {" and ".join(names)} same id {id}')
Success #stdin #stdout 0.04s 9720KB
stdin
Standard input is empty
stdout
names saeed1-gr1 and saeed15-gr1 same id 1
names pl1-saeed1 and pl1-saeed7 same id 1
names saeed11-gr2 and saeed3-gr2 same id 8
names ps1-saeed15 and ps1-saeed11 same id 1