Добавление/изменение значения словаря по ключу key в Python
Операция d[key] = value добавит в словарь dict новый элемент — пару ключ-значение.
Если в словаре существует ключ key то эта операция присвоит ключу key новое значение value .
Примеры добавления ключей в словарь:
# создадим пустой словарь `x` >>> x = <> # добавим в словарь `x` ключ 'one' со значением 1 >>> x['one'] = 1 # # добавим еще несколько ключей со значениями >>> x['two'] = 2 >>> x['three'] = 3 >>> x['four'] = 4 # смотрим что получилось >>> x #
Примеры изменения значений ключей в словаре:
# изменим значение с ключом `two` >>> x['two'] = 20 >>> x # # добавим в словарь `x` ключ 'ten' со значением 10 >>> x['ten'] = 10 # # изменим значение с ключом `one` >>> x['one'] = 0 #
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Представления словарей dict.keys, dict.values и dict.items
- Исходный словарь для представления dictview.mapping
- Получение списка ключей словаря list(dict)
- Количество элементов в словаре len(dict)
- Доступ к значению словаря по ключу dict[key]
- Добавление/изменение значения словаря по ключу key
- Удаление значения словаря по ключу
- Проверка наличия/отсутствия ключа key в словаре dict
- Проверка наличия/отсутствия значения value в словаре Python
- Проверка наличия/отсутствия пары (key, value) в словаре dict
- Итерирование по ключам и значениям словаря Python
- Метод dict.clear(). Очистить словарь
- Метод dict.copy(), копия словаря
- Метод dict.fromkeys(), словарь с ключами по умолчанию
- Метод dict.get(), значение по умолчанию если ключа нет
- Метод dict.items(), список кортежей
- Метод dict.keys(), список ключей словаря
- Метод dict.values(), список значений словаря
- Метод dict.pop()
- Метод dict.popitem(), получить пару ключ/значение
- Метод dict.setdefault(), получает/вставляет значение ключа
- Метод dict.update(), обновление/дополнение словаря
- Объединение двух словарей в новый словарь Python
- Сортировка словаря по значению и/или ключу
- Обратный порядок/реверс словаря reversed(dict)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
ХОЧУ ПОМОЧЬ
ПРОЕКТУ
Словари: увеличить возраст конкретного студента на 1
Задача Экзамены – поиск оценок конкретного студента
Создайте базу данных univer с тремя таблицами: student, subject, exam. Student: id_stud,fio,kurs;.
Запрос на возраст студента
Подскажите формулу для запроса на количество студентов, которым есть 18 лет(то есть, студенды.
Вычислить возраст каждого студента
Простите заранее за глупый вопрос. У я ещё новичек в этом всём деле. как можно вычислить возраст.
![]()
![]()
![]()
![]()
12134 / 7392 / 1734
Регистрация: 25.07.2009
Сообщений: 13,559
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/python3 students_list = [ [1, 'Vasya', 18, 13], [2, 'Petya', 19, 13], [3, 'Emanuil', 75, 13] ] students_dict = {} for i in students_list: students_dict[i[0]] = i[1:] for i in students_dict: if students_dict[i][0] == 'Emanuil': students_dict[i][1] += 1 for i in students_dict: print("%d:\t%s\t%d\t%d" % (i, students_dict[i][0], students_dict[i][1], students_dict[i][2]))
$ ./emanuil.py 1: Vasya 18 13 2: Petya 19 13 3: Emanuil 76 13
Сообщение от Anzhelaaa 
(«ФИО» студента необходимо ввести с клавиатуры)
Вот это не знаю, как сделать.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
По заданным параметрам в данных о студенческой группе найти конкретного студента
Составить программу на алгоритмическом языке Turbo Pascale, выбирающую из данных о студенческой.

Вывести возраст студента и срок его обучения
Помогите пожалуйста, (Разработайте консольную прикладную программу, которая предлагает пользователю.
Алгоритм с ветвлением: как определить возраст студента?
Дата рождения студента d, m, g. Напишите программу определения, исполнилось ли студенту полных 18.
Увеличить значение поля в БД конкретного ID на 1
Здравствуйте! Помогите решить такую проблему. Нужно, чтобы по нажатию на ссылку, значение в базе.
Найти вероятность конкретного уровня подготовки студента при условии успешной сдачи им экзамена
2. В студенческой группе 3 человека имеют высокий уровень подготовки, 19 человек – средний и 3 –.
Вывести на экран фамилию самого молодого студента и его возраст.
Помогите с задачами. 1.Дан текстовый файл, содержащий данные о студентах: фамилия студента.
Увеличить возраст студентов в заданной группе на 1
Надо сделать: Увеличение возраста студентов в заданной пользователем группе на 1. + возможность.
Увеличение значения ключа в словаре Python
В этом посте будет обсуждаться, как увеличить ключ в словаре Python, если он существует; в противном случае инициализируйте его.
1. Использование предложения if-else
Простое решение — использовать предложение if-else с key in d операция. Это решение не является предпочтительным, поскольку блок if-else не считается Pythonic.
if __name__ == ‘__main__’ :
d = dict . fromkeys ( [ ‘A’ , ‘B’ , ‘C’ ] , 1 )
d [ key ] = d [ key ] + 1 if key in d else 1
2. Использование dict.get() функция
Рекомендуемое решение — использовать двухаргументную форму dict.get() функция, которая возвращает значение, если ключ присутствует в словаре, в противном случае по умолчанию. Вы можете указать значение по умолчанию как то же значение, с которым вы хотите инициализировать свой словарь.
if __name__ == ‘__main__’ :
d = dict . fromkeys ( [ ‘A’ , ‘B’ , ‘C’ ] , 1 )
d [ key ] = d . get ( key , 0 ) + 1
3. Использование dict.setdefault() функция
В качестве альтернативы вы можете использовать dict.setdefault() функция, которая устанавливает и возвращает значение по умолчанию, когда ключ отсутствует в словаре. Он возвращает значение, когда ключ находится в словаре.
if __name__ == ‘__main__’ :
d = dict . fromkeys ( [ ‘A’ , ‘B’ , ‘C’ ] , 1 )
d [ key ] = d . setdefault ( key , 0 ) + 1
4. Использование блока try/except
Вы также можете использовать d[key]=value синтаксис для увеличения ключа в словаре. Это вызывает KeyError если указанный ключ не существует в словаре. Чтобы справиться с этим, используйте блок try/except, как показано ниже:
Словарь в Python, расширение значений ключа
Каким образом/методом можно расширить значения объекта по ключу в словаре, есть ли универсальный метод или способ для этого без шаманства?
К примеру расширить значения в словаре с условием, описанном на Stepic:
def update_dictionary(d, key, value): if key in d: d[key] =+ (value) else: d.update() print (d) d = update_dictionary(d, 1, -1) update_dictionary(d, 2, 2) update_dictionary(d, 5, 10) update_dictionary(d, 1, 21)
- Код написан неверно, он не работает как должен, написан для примера.
На выходе получается , но в итоге нужно не полное замещение значений ключа а его расширение .
Подскажите, как это можно реализовать?
Отслеживать
задан 19 фев 2016 в 10:11
149 6 6 серебряных знаков 15 15 бронзовых знаков
Я никого не прошу решать задание или комментировать данный кусок кода, я сам отлично справлюсь, если будут даны пояснения и варианты по моему вопросу.
19 фев 2016 в 10:39
вопрос не ясен. Уберите упоминание внешнего ресурса. Опишите своими словами (а не с помощью неработающего кода) какое преобразование над словарём вы хотите произвести и приведите пример что на входе, что на выходе ( не является корректной константой для словаря в Питоне, возможно вы имели ввиду ).
19 фев 2016 в 10:52
Вопрос выведен в заголовке, а так же в теле выделен ЖИРНЫМ, все остальное для примера указано, даже сводка имеется по коду, все схематично описано для понимания вопроса, если вы обладаете знанием по данному вопросу, прошу рассказать, а не устраивать дискуссии по моему вопросу, я жду ответов как от @andy.37, а не минусования и дополнительный вопросов по моему вопросу, я доступно описал мою задачу (напоминаю — ЖИРНЫМ).
19 фев 2016 в 11:00
То что у Вас жирным описано не является конкретным вопросом. «расширить значения объекта по ключю в словаре» слишком обширно — не хватает деталей — необходимо уточнить вопрос. Будьте вежливы
19 фев 2016 в 11:06
Для этого схематичное описание и в конце и ожидаемый итог: ‘<1: -1, 21, key: value1, value2. >‘, первый объект словаря и последующие ключи и значения, которые добавились в процессе расширения словаря, а в частности значений по конкретному ключу. Не хочу оскорбить никого, я жду помощи, разъяснений по данному вопросу, так как хочу понимать какими способами еще можно данный вопрос реализовать.1:>
19 фев 2016 в 11:13
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
key_val = [0, 1, 2], [10, 11, 12] dt = print(1, dt) key_val[0].append(3) key_val[-1].pop(-1) print(2, dt)
Отслеживать
ответ дан 3 авг 2016 в 7:03
vadim vaduxa vadim vaduxa
8,932 14 14 серебряных знаков 24 24 бронзовых знака
def extend_dictionary(d, key, value): if key in d: if isinstance(d[key], list): d[key].append(value) else: d[key] = [d[key], value] else: d[key] = value
if key in d: try: d[key].append(value) except AttributeError: d[key] = [d[key], value] else: d[key] = value
Вам нужно в первую очередь для себя понять, что именно Вы понимаете под «расширением» значения словаря. Просто можно придумать миллион способов — упаковка в список: [d[key], newvalue] , в кортеж: (d[key], newvalue) или d[key] + (newvalue,) если d[key] — уже кортеж, в специальный класс типа Appendable с реализованным методом append, да хоть в строку str(d[key]) + ‘,’ + str(newvalue) , можно даже в словарь, счатающий повторения совпадающих значений: , 2: > . В конце концов тривиальное d[key] += newvalue — тоже можно назвать расширением.
Вот это: d[2 * key] = . мне представляется крайне неудачным, т.к. что мы будем делать если ключ 2 * key in d —> True ? На 3 умножать?
Дополню ответ (за настырность). Вы часто употребляете термин «последовательность» — value1, value2, . . Надо понять, что именно является последовательностью. В python реализовано несколько видов встроенных последовательностей — это список list , кортеж tuple , множество set , в известном смысле словарь dict . В С — только массив (прямых аналогов в питоне нет). В других языках другие. Можно реализовать свою последовательность:
class MySophisticatedSequence: def __init__(self, value): self.value = value self.current = 0 if self.value < self.current: raise ValueError def append(self, newvalue): self.value += newvalue def __contains__(self, value): return value < self.value def __iter__(self): return self def next(self): if self.current >self.value: raise StopIteration else: self.current += 1 return self.current - 1 a = MySophisticatedSequence(4) print 3 in a print 6 in a a.append(5) print 6 in a for i in a: print i
Это хоть и достаточно бессмысленная, но тоже последовательность, в которую можно паковать value1, value2 и т.д. (вытащить обратно будет непросто — это да)
