Загрузка...

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

Тема в разделе 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. Reverlight Автор темы
      id566347758, не сильно, главное чтобы работало)
    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
Загрузка...