Найти - Пользователи
Полная версия: Оставить только уникальные значения в словарях внутри списка
Начало » Python для новичков » Оставить только уникальные значения в словарях внутри списка
1
lomach
Здравствуйте!

Есть список такого вида:
 list_1 = [{'uid':'001', 'key1':'AAA', 'name':'BBB', 'desc':'SSS'},
         {'uid':'002', 'key1':'BBB', 'name':'CCC', 'desc':'EEE'},
         {'uid':'003', 'key1':'CCC', 'name':'CCC', 'desc':'EEE'}]
На выходе я должен получить этот же список только с уникальные значениями ключей name и desc.
Подскажите, как оптимальнее всего это сделать?

Пока придумал только скопировать его и сравнить нужные ключи в двух списках. Возможно есть более оптимальное решение.
Спасибо!
marvellik
в два цикла. первый получаете все значения для ключей name и desc потом находите уникальные и снова в цикле меняете их
lomach
marvellik
в два цикла. первый получаете все значения для ключей name и desc потом находите уникальные и снова в цикле меняете их
НИпАнятна.
Что мне даст нахождение уникальных name и desc?
AD0DE412
lomach
НИпАнятна.
вот, вот. как вы определяете уникальность? что значит уникальные? ункальное по отношению к чему?
и еще …
если опредилили, то что с этим делать … вы бы там для себя решили что хотите.
зы вот в вашем примере входные есть, придведите пример выходных данных.
lomach
AD0DE412

 list_1 = [{'uid':'001', 'key1':'AAA', 'name':'банан', 'desc':'сочный'},
         {'uid':'002', 'key1':'BBB', 'name':'апельсин', 'desc':'сладкий'},
         {'uid':'003', 'key1':'CCC', 'name':'апельсин', 'desc':'сладкий'},
         {'uid':'004', 'key1':'SSS', 'name':'апельсин', 'desc':'кислый'}]

В списке на выходе должен быть только 1 сладкий апельсин.
AD0DE412
те не должно быть повторов так?
и какой апельсин и какой сладкий конкретно лишний в камом виде вы видете выходные данные?
lomach
AD0DE412
те не должно быть повторов так?и какой апельсин сладкий конкретно лишний в ком виде вы видете выходные данные?
Какой апельсин - разницы нет. Если уже есть “сладкий апельсин”, то второго быть уже не должно.
Romissevd
 list_1 = [{'uid':'001', 'key1':'AAA', 'name':'банан', 'desc':'сочный'},
         {'uid':'002', 'key1':'BBB', 'name':'апельсин', 'desc':'сладкий'},
         {'uid':'003', 'key1':'CCC', 'name':'апельсин', 'desc':'сладкий'},
         {'uid':'004', 'key1':'SSS', 'name':'апельсин', 'desc':'кислый'}]
res = []
for val in list_1:
    flag = False
    for x in res:
        if val['name'] == x['name'] and val['desc'] == x['desc']:
            flag = True
            break
    if not flag:
        res.append(val)
print(res)
lomach
Romissevd
res =
for val in list_1:
flag = False
for x in res:
if val == x and val == x:
flag = True
break
if not flag:
res.append(val)
print(res)
Спасибо!
А как это работает. res ведь пустой список изначально?
AD0DE412
lomach
А как это работает. res ведь пустой список изначально?
вобще то нет
ps как это работает res.append(val)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB