Форум сайта python.su
Спасите срочно нужна помощь:
# У меня есть вот такой список словарей
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)
Офлайн
Вы сказали всё, кроме - а в чём помощь то должна заключаться? Вы не знаете как сортировать, или не знаете как заменять значение???
В чем вопрос?
Офлайн
Как отсортировать и удалить из списка одиночные словари
Отредактировано strelok1703 (Дек. 14, 2019 05:11:05)
Офлайн
Сортировка сначала по имени, потом по индесу:
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'}]
Офлайн
strelok1703я сначала понимал для чего это нужно но
Нужно отсортировать и удалить из списка одиночные словари чтоб получилось вот так
strelok1703тут я начал зависать зачем что то делать промежуточное если есть уже готовый словарь где убраны одиночные но тут я тупо потерялся :
Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
{'name': ‘Таня’, ‘index’: ‘13’}
strelok1703
Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
{'name': ‘Таня’, ‘index’: ‘B’}, {'name': ‘Таня’, ‘index’: ‘5’},
Офлайн
.
Офлайн
marvellikсначала подумал что это в 16-ричной системе, но тогда B+5=10 но никак не 13 всеравно.
то есть как сложить ‘B’ и 5 чтобы получить 13 ???
[code python][/code]
Отредактировано PEHDOM (Фев. 19, 2020 19:59:52)
Офлайн