Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 6

Хранение ключей и значений в словаре

19.08.2018, 12:26. Показов 3066. Ответов 7

Студворк — интернет-сервис помощи студентам
Мне нужно в словарь записать пары ключ и значение.

Но в ключах есть одинаковые значения и программой затирается предыдущее значение, а мне нужно, чтобы присутствовали все записи.

Как мне поступить?

Имеется фрагмент:

Python
1
2
3
result = get_sports(["Ронни О'Салливан - снукер", 'Магнус Карлсен - шахматы', 'Марк Селби - снукер'])
for key in sorted(result):
    print(key + ':', ', '.join(sorted(result[key])))
Нужно написать функцию обработки для получения на экране:

снукер: Марк Селби, Ронни О'Салливан
шахматы: Магнус Карлсен

Добавлено через 5 минут
Вот мой нерабочий вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def get_sports(lines):
    result=dict()
    for i in range(len(lines)):
        sportsman,sport=lines[i].split('-')
        result[sport] = str(sportsman)
    return result
 
result = get_sports(["Ронни О'Салливан - снукер",
                     'Магнус Карлсен - шахматы',
                     'Марк Селби - снукер'])
for key in sorted(result):
    print(key + ':', ', '.join(sorted(result[key])))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2018, 12:26
Ответы с готовыми решениями:

Перебор ключей в словаре
Приступил к изучению питона, сейчас полно всяких бесплатных курсов и вот проходя один из них, выполняю очередное задание. В задании нужно...

Подсчитать количество ключей в словаре
Пусть дан словарь. Посчитайте и выведите сколько в словаре ключей.

Перебор ключей по значению в словаре
Как можно перебрать значения словаря, чтобы получить ключи? К примеру в словаре A при вводе пользователем "1 2 3" на экран...

7
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
19.08.2018, 12:56
В твоем случае ключ словаря — строка, значение — строка. Сделай значение списком строк.
1
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 6
19.08.2018, 13:12  [ТС]
А как это сделать?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
19.08.2018, 13:19
Лучший ответ Сообщение было отмечено bzfar как решение

Решение

Ну тыжпрограммист.
Python
1
2
3
4
5
6
7
8
9
from collections import defaultdict
 
 
def get_sports(lines):
    result = defaultdict(list)
    for line in lines:
        sportsman, sport = line.split('-')
        result[sport.strip()].append(sportsman.strip())
    return result
1
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 6
19.08.2018, 13:28  [ТС]
Ну тыжпрограммист.
Только начинаю изучать Python))) Спасибо за помощь!
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.08.2018, 13:29
Лучший ответ Сообщение было отмечено bzfar как решение

Решение

Python
1
2
3
4
5
6
def get_sports(lines):
    result = {}
    for line in lines:
        sportsman, sport = line.split('-')
        result.setdefault(sport.strip(), []).append(sportsman.strip())
    return result
1
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 6
19.08.2018, 13:39  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Python
1
2
3
4
5
6
def get_sports(lines):
    result = {}
    for line in lines:
        sportsman, sport = line.split('-')
        result.setdefault(sport.strip(), []).append(sportsman.strip())
    return result
Спасибо за ответ!

Еще вопрос... Как поменять список на множество, чтобы при обращении к функции

print(get_sports(['Ку Пон Чхан - стрельба из лука']))

вывод был
{'стрельба из лука': {'Ку Пон Чхан'}}

а не
{'стрельба из лука': ['Ку Пон Чхан']}
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.08.2018, 04:20
Вместо [] напиши set()

Добавлено через 54 секунды
Только придётся вызывать функцию не append, а add
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2018, 04:20
Помогаю со студенческими работами здесь

Подсчет ключей в словаре и сортировка
Здравствуйте! Написал вот такой код: from collections import defaultdict import datetime # просто, чтобы желтым вызовы модуля...

Как выдрать последние 10 ключей в словаре
Подскажите пожалуйста! Есть словарь(в нем есть число(1-80), и сколько раз оно повторяется) {6: 26, 8: 20, 9: 20, 21: 33, 24: 27, 25:...

Отображение ключей в словаре как чисел в двоичном формате
Здравствуйте! Я разыгрываю генератор, который выдает некие значения в двоичном представлении по порядку, отличающиеся друг от друга, но...

Хранение ключей шифрования
Здравствуйте, уважаемые форумчане! Пользую стандартные .NET'ие реализации симетричных алгоритмов для шифрования файлов. Возник вопрос:...

Хранение ключей шифрования
Есть программа, которая шифрует некоторые файлы. Шифруется симметричным алгоритмом(ассиметричный использовать не подходит), ключ задается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru