@Spyderden

Как определить дубликаты элементов в массиве по первому слову и правильно их обработать?

def count_M(arr, value):
        count = 0
        for item in arr:
            # Разделяем строку на слова, используя пробел как разделитель
            words = item.split()
            if words and words[0] == value:
                count += 1
        return count

    def calculate_result(self):
        try:
            input_text = self.input_text.toPlainText().strip()  # Удаляем лишние пробелы и переносы строк
            s = [line.strip() for line in input_text.split('\n')]  # Разделяем на адреса по строкам
            print(s)  # Вывод исходных данных в консоль
            result_c = []
            result = {}
            duplicates = []  # Список для хранения дубликатов

            for item in s:
                # Разделяем элемент на ключ и значение
                parts = item.split()

                # Проверяем, что в элементе есть как ключ, так и значение
                if len(parts) == 2:
                    key, value = parts
                    result[key] = value
                    print(result[key])
                else:
                    print(f"Неверный формат элемента: {item}")

            while s:
                unique_items = []

                for item in s:
                    if count_M(s, item.split()[0]) == 1 or unique_items.count(item) == 0:
                        unique_items.append(item)
                    else:
                        duplicates.append(item)  # Добавляем дубликаты в список

                result_c.extend(unique_items)

                for item in unique_items:
                    s.remove(item)

                if s:
                    result_c.append("")

            result_text = "\n".join(result_c)
            self.result_text.setPlainText(result_text)

            # Выводим дубликаты в консоль
            if duplicates:
                print("Дубликаты:")
                for duplicate in duplicates:
                    print(duplicate)
        except Exception as e:
            QMessageBox.warning(self, 'Ошибка', f'Произошла ошибка: {str(e)}')

            # Добавляем вывод ошибки в консоль
            print(f'Произошла ошибка: {str(e)}')


Я смог сделать определение по первому слову, но все равно не получается. Ведь когда я даю коду такой список:

party1 2010
party2 2015
party1 2018

То код должен вернуть

party1 2010
party2 2015

party1 2018

А он возвращает

party1 2010
party2 2015
party1 2018

Прошу подсказать или помочь решить эту проблему
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы