Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2019 13:48:29

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

Здравствуйте!

Есть список такого вида:

 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.
Подскажите, как оптимальнее всего это сделать?

Пока придумал только скопировать его и сравнить нужные ключи в двух списках. Возможно есть более оптимальное решение.
Спасибо!




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#2 Сен. 21, 2019 17:18:15

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

в два цикла. первый получаете все значения для ключей name и desc потом находите уникальные и снова в цикле меняете их

Офлайн

#3 Сен. 21, 2019 18:41:06

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

marvellik
в два цикла. первый получаете все значения для ключей name и desc потом находите уникальные и снова в цикле меняете их
НИпАнятна.
Что мне даст нахождение уникальных name и desc?




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#4 Сен. 21, 2019 20:30:23

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

lomach
НИпАнятна.
вот, вот. как вы определяете уникальность? что значит уникальные? ункальное по отношению к чему?
и еще …
если опредилили, то что с этим делать … вы бы там для себя решили что хотите.
зы вот в вашем примере входные есть, придведите пример выходных данных.



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 21, 2019 20:34:35)

Офлайн

#5 Сен. 21, 2019 20:35:54

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

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 сладкий апельсин.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Отредактировано lomach (Сен. 21, 2019 20:36:50)

Офлайн

#6 Сен. 21, 2019 20:39:22

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

те не должно быть повторов так?
и какой апельсин и какой сладкий конкретно лишний в камом виде вы видете выходные данные?



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 21, 2019 20:45:42)

Офлайн

#7 Сен. 21, 2019 20:43:29

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

AD0DE412
те не должно быть повторов так?и какой апельсин сладкий конкретно лишний в ком виде вы видете выходные данные?
Какой апельсин - разницы нет. Если уже есть “сладкий апельсин”, то второго быть уже не должно.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#8 Сен. 21, 2019 20:44:47

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

 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)

Офлайн

#9 Сен. 21, 2019 20:49:38

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

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 ведь пустой список изначально?




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#10 Сен. 21, 2019 20:54:45

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Оставить только уникальные значения в словарях внутри списка

lomach
А как это работает. res ведь пустой список изначально?
вобще то нет
ps как это работает res.append(val)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Сен. 21, 2019 21:11:01)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version