Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2019 20:43:45

strelok1703
Зарегистрирован: 2019-12-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со словарями

Спасите срочно нужна помощь:
# У меня есть вот такой список словарей
list1 = [
{'name': ‘Вика’, ‘index’: ‘A’},
{'name': ‘Таня’, ‘index’: ‘B’},
{'name': ‘Оля’, ‘index’: ‘C’},
{'name': ‘Вика’, ‘index’: ‘A’},
{'name': ‘Рита’, ‘index’: ‘B’},
{'name': ‘Вика’, ‘index’: ‘D’},
{'name': ‘Соня’, ‘index’: ‘A’},
{'name': ‘Таня’, ‘index’: ‘E’},
{'name': ‘Оля’, ‘index’: ‘F’},
{'name': ‘Вика’, ‘index’: ‘C’},
{'name': ‘Люба’, ‘index’: ‘A’},
{'name': ‘Лена’, ‘index’: ‘E’}
]

# Нужно отсортировать и удалить из списка одиночные словари чтоб получилось вот так
list1 = [
{'name': ‘Вика’, ‘index’: ‘A’},
{'name': ‘Вика’, ‘index’: ‘A’},
{'name': ‘Вика’, ‘index’: ‘B’},
{'name': ‘Вика’, ‘index’: ‘C’},
{'name': ‘Таня’, ‘index’: ‘B’},
{'name': ‘Таня’, ‘index’: ‘E’},
{'name': ‘Оля’, ‘index’: ‘C’},
{'name': ‘Оля’, ‘index’: ‘A’},
]

# Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
list2 =

list1 = [
{'name': ‘Вика’, ‘index’: ‘2’},
{'name': ‘Вика’, ‘index’: ‘2’},
{'name': ‘Вика’, ‘index’: ‘3’},
{'name': ‘Вика’, ‘index’: ‘1’},
{'name': ‘Таня’, ‘index’: ‘B’},
{'name': ‘Таня’, ‘index’: ‘5’},
{'name': ‘Оля’, ‘index’: ‘1’},
{'name': ‘Оля’, ‘index’: ‘2’},
]
# Сложить словари чтоб получилось вот так
lest3 = [
{'name': ‘Вика’, ‘index’: ‘8’},
{'name': ‘Таня’, ‘index’: ‘13’},
{'name': ‘Оля’, ‘index’: ‘3’}
]

Отредактировано strelok1703 (Дек. 13, 2019 20:50:53)

Офлайн

#2 Дек. 14, 2019 02:21:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Работа со словарями

Вы сказали всё, кроме - а в чём помощь то должна заключаться? Вы не знаете как сортировать, или не знаете как заменять значение???
В чем вопрос?



Офлайн

#3 Дек. 14, 2019 05:09:31

strelok1703
Зарегистрирован: 2019-12-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со словарями

Как отсортировать и удалить из списка одиночные словари

Отредактировано strelok1703 (Дек. 14, 2019 05:11:05)

Офлайн

#4 Фев. 18, 2020 18:38:11

starshiptuna
Зарегистрирован: 2020-02-18
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со словарями

Сортировка сначала по имени, потом по индесу:

 sorted_list1 = sorted(list1, key=lambda x: (x['name'], x['index']))

 [{'name': 'Вика', 'index': 'A'}, {'name': 'Вика', 'index': 'A'}, {'name': 'Вика', 'index': 'C'}, {'name': 'Вика', 'index': 'D'}, {'name': 'Лена', 'index': 'E'}, {'name': 'Люба', 'index': 'A'}, {'name': 'Оля', 'index': 'C'}, {'name': 'Оля', 'index': 'F'}, {'name': 'Рита', 'index': 'B'}, {'name': 'Соня', 'index': 'A'}, {'name': 'Таня', 'index': 'B'}, {'name': 'Таня', 'index': 'E'}]

Удаление уникальных элементов (топорная простейшая логика):
 unique_list1 = []
 unique_key_done = set()
 for elem in sorted_list1:
      key = elem['name'] + elem['index']
      if key in unique_key_done:
          continue
      unique_list1.append(elem)
      unique_key_done.add(key)

 [{'name': 'Вика', 'index': 'A'}, {'name': 'Вика', 'index': 'C'}, {'name': 'Вика', 'index': 'D'}, {'name': 'Лена', 'index': 'E'}, {'name': 'Люба', 'index': 'A'}, {'name': 'Оля', 'index': 'C'}, {'name': 'Оля', 'index': 'F'}, {'name': 'Рита', 'index': 'B'}, {'name': 'Соня', 'index': 'A'}, {'name': 'Таня', 'index': 'B'}, {'name': 'Таня', 'index': 'E'}]

Офлайн

#5 Фев. 19, 2020 17:10:23

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

Работа со словарями


strelok1703
Нужно отсортировать и удалить из списка одиночные словари чтоб получилось вот так
я сначала понимал для чего это нужно но
strelok1703
Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
тут я начал зависать зачем что то делать промежуточное если есть уже готовый словарь где убраны одиночные но тут я тупо потерялся :
 {'name': ‘Таня’, index: 13}
откуда взялась 13 ?
strelok1703
Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
 {'name': ‘Таня’, index: B},
{'name': ‘Таня’, index: 5},
то есть как сложить ‘B’ и 5 чтобы получить 13 ???

Офлайн

#6 Фев. 19, 2020 18:56:33

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

Работа со словарями

.



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

есчщо

Офлайн

#7 Фев. 19, 2020 19:59:37

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Работа со словарями

marvellik
то есть как сложить ‘B’ и 5 чтобы получить 13 ???
сначала подумал что это в 16-ричной системе, но тогда B+5=10 но никак не 13 всеравно.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 19, 2020 19:59:52)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version