#!/usr/bin/python import argparse def unique_combined_list(*inputs): # Combine lists combined_list = [ item.strip().title() for input_list in inputs for item in input_list.split(",") ] # Create an empty list to store the final unique names final_list = [] # Check for reversed names for name in combined_list: parts = name.split() # If the name has two words, check for its reversed variant if len(parts) == 2: first, last = parts reversed_name = f"{last} {first}" # If neither the name nor its reversed variant is in the final list, add the name if name not in final_list and reversed_name not in final_list: final_list.append(name) # If it's a single-word name, simply add it if it's not in the final list else: if name not in final_list: final_list.append(name) # Sort the list sorted_list = sorted(final_list) # Convert the list back to a comma-separated string output = ",".join(sorted_list) return output def main(): # Create an argument parser parser = argparse.ArgumentParser( description="Combine multiple comma-separated lists into one unique sorted list." ) # Add a variable number of input lists parser.add_argument("lists", nargs="+", type=str, help="Comma-separated lists.") # Parse the arguments args = parser.parse_args() # If only one list is provided, use it twice if len(args.lists) == 1: args.lists.append(args.lists[0]) # Get the unique combined list result = unique_combined_list(*args.lists) print(result) if __name__ == "__main__": main()