strelok1703
Дек. 13, 2019 20:43:45
Спасите срочно нужна помощь:
# У меня есть вот такой список словарей
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’}
]
FishHook
Дек. 14, 2019 02:21:04
Вы сказали всё, кроме - а в чём помощь то должна заключаться? Вы не знаете как сортировать, или не знаете как заменять значение???
В чем вопрос?
strelok1703
Дек. 14, 2019 05:09:31
Как отсортировать и удалить из списка одиночные словари
starshiptuna
Фев. 18, 2020 18:38:11
Сортировка сначала по имени, потом по индесу:
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'}]
marvellik
Фев. 19, 2020 17:10:23
strelok1703
Нужно отсортировать и удалить из списка одиночные словари чтоб получилось вот так
я сначала понимал для чего это нужно но
strelok1703
Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
тут я начал зависать зачем что то делать промежуточное если есть уже готовый словарь где убраны одиночные но тут я тупо потерялся :
{'name': ‘Таня’, ‘index’: ‘13’}
откуда взялась 13 ?
strelok1703
Заменить значение элементов index в словаре list1 на значение из словаря list2 вот так
{'name': ‘Таня’, ‘index’: ‘B’},
{'name': ‘Таня’, ‘index’: ‘5’},
то есть как сложить ‘B’ и 5 чтобы получить 13 ???
PEHDOM
Фев. 19, 2020 19:59:37
marvellik
то есть как сложить ‘B’ и 5 чтобы получить 13 ???
сначала подумал что это в 16-ричной системе, но тогда B+5=10 но никак не 13 всеравно.