Найти - Пользователи
Полная версия: Работа со словарями
Начало » Центр помощи » Работа со словарями
1
strelok1703
Спасите срочно нужна помощь:
# У меня есть вот такой список словарей
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
Вы сказали всё, кроме - а в чём помощь то должна заключаться? Вы не знаете как сортировать, или не знаете как заменять значение???
В чем вопрос?
strelok1703
Как отсортировать и удалить из списка одиночные словари
starshiptuna
Сортировка сначала по имени, потом по индесу:
 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

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

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