Загрузка...

Нужно найти дубликаты в словаре (массиве) с вложенностью

Тема в разделе Python создана пользователем Reverlight 16 авг 2020. 165 просмотров

  1. Reverlight
    Reverlight Автор темы 16 авг 2020 Пью чай 27 23 июл 2020
    Основная проблема в том, что я могу сделать алгоритм для одного элемента который повторяется, но не могу придумать как это реализовать для пар нескольких.

    Вот массив:
    {"Code":[{"price":30, "value":100},{"price":30, "value":100}, {"price":15, "value":75},{"price":15, "value":75}, {"price":5, "value":10}]}
    [IMG]
    Задача превратить его в это {"Code":[{"price":30, "value":100, "number":2}, {"price":15, "value":75, "number":2}, {"price":5, "value":10, "number":1}]}
    [IMG]
    Найти все дубликаты по прайсу и оставить один экземпляр и number (количество) будет соответствовать кол-ву дупликатов.
    Буду рад совету как подступиться к этой задаче. Головую ломаю не могу придумать. Заранее спасибо)
     
  2. oriole
    oriole 16 авг 2020 был(а) давно
    Python
    if  a['Code'][0] == a['Code'][1]
     
    1. oriole
      oriole, a это имя словаря
    2. Reverlight Автор темы
      oriole, наверное неправильно объяснил. Сори. Я понимаю как это сделать просто пробив все по индексу и сравнив. Мне нужно алгоритм который при случайных значениях и кол-ве например 1000 элементов в таком массиве удалит дубликаты. То что я скинул выше это структура.
  3. id566347758
    Скорость важна?
     
    1. Посмотреть предыдущие комментарии (1)
    2. id566347758
      Reverlight, можешь скинуть свой вариант на один элемент
    3. Reverlight Автор темы
      id566347758, да все, я уже придумал как написать код)
  4. Decoy4298
    Decoy4298 16 авг 2020 217 18 фев 2020
    Код
    d['Code'] = [dict(t) for t in {tuple(d.items()) for d in d['Code']}]
    --- Сообщение объединено с предыдущим 16 авг 2020
    Python

    def filter_list(l):
    seen = []
    for d in l:
    t = tuple(d.items())
    if t not in seen:
    seen.append(t)

    return [dict(i) for i in seen]

    d['Code'] = filter_list(d['Code'])
    --- Сообщение объединено с предыдущим 16 авг 2020
    * Если важен порядок элементов
     
Top
Загрузка...