Уведомления

Группа в Telegram: @pythonsu

#1 Май 23, 2022 12:25:29

watermelon
Зарегистрирован: 2022-05-13
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

Помогите с заданием, пожалуйста. Сам не могу написать код, ибо я бот в питоне:

Есть список словарей. Значения ключей - положительные числа, а значения - строки.
Ключи разных словарей могут пересекаться.
Сформировать на основе списка новый словарь, у которого будут все ключи словарей из списка
с соответствующими значениями. Если ключи повторяются, то взять за значение наибольшее из разных
словарей.

Офлайн

#2 Май 23, 2022 20:17:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

watermelon
Значения ключей - положительные числа, а значения - строки.
watermelon
Если ключи повторяются, то взять за значение наибольшее из разных
словарей.
Наибольшее из разных словарей? Наибольшее что?



Офлайн

#3 Май 23, 2022 21:23:14

watermelon
Зарегистрирован: 2022-05-13
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

py.user.next
Как я понял речь идет о значениях, и если ключи повторяются, то взять наибольший из этих значений. То есть если у нас пенал - 1, ручка - 1, то к ключу 1 будет взято значение пенал, ибо буква п встречается раньше чем буква р в алфавите. А если это не так, то я не знаю, все написанное перед этим - слова преподавателя

Офлайн

#4 Май 23, 2022 22:47:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

  
>>> lst = [
...     {1: 'a', 2: 'b', 3: 'e'},
...     {1: 'z', 2: 'b', 3: 'c', 4: 'd'},
...     {1: 'a', 2: 'c', 3: 'c', 5: 'b', 6: 'a'},
...     {1: 'a', 2: 'b', 3: 'c', 4: 'x'},
...     {1: 'a', 2: 'b', 3: 'c', 5: 'a'}
... ]
>>> 
>>> out = {}
>>> for i in lst:
...     for k, v in i.items():
...         if k not in out:
...             out[k] = v
...         elif v > out[k]:
...             out[k] = v
... 
>>> out
{1: 'z', 2: 'c', 3: 'e', 4: 'x', 5: 'b', 6: 'a'}
>>>



Офлайн

#5 Май 24, 2022 10:58:12

watermelon
Зарегистрирован: 2022-05-13
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

py.user.next
Объясните код начиная со строки for k, v in i.item()
для чего нужен .item() и что происходит далее?

Офлайн

#6 Май 24, 2022 11:52:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

watermelon
начиная со строки for k, v in i.item()
для чего нужен .item()
  
>>> d = {1: 'a', 2: 'b', 3: 'c'}
>>> d
{1: 'a', 2: 'b', 3: 'c'}
>>> list(d.items())
[(1, 'a'), (2, 'b'), (3, 'c')]
>>>
Возввращает пары (ключ, значение) из словаря.
ключ - key, поэтому сокращение - буква k
значение - value, поэтому сокращение - буква v

watermelon
что происходит далее?
Создаётся новый словарь из пустого словаря.
Если ключа нет в новом словаре, то добавить ключ и его значение в новый словарь, иначе если значение в старом словаре по этому ключу больше значения в новом словаре по этому ключу, то в новом словаре для этого ключа установить новое значение.



Отредактировано py.user.next (Май 24, 2022 11:54:23)

Офлайн

#7 Май 24, 2022 12:51:03

watermelon
Зарегистрирован: 2022-05-13
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно написать код для словарей

py.user.next
Спасибо огромное!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version