Форум сайта python.su
Помогите с заданием, пожалуйста. Сам не могу написать код, ибо я бот в питоне:
Есть список словарей. Значения ключей - положительные числа, а значения - строки.
Ключи разных словарей могут пересекаться.
Сформировать на основе списка новый словарь, у которого будут все ключи словарей из списка
с соответствующими значениями. Если ключи повторяются, то взять за значение наибольшее из разных
словарей.
Офлайн
watermelon
Значения ключей - положительные числа, а значения - строки.
watermelonНаибольшее из разных словарей? Наибольшее что?
Если ключи повторяются, то взять за значение наибольшее из разных
словарей.
Офлайн
py.user.nextКак я понял речь идет о значениях, и если ключи повторяются, то взять наибольший из этих значений. То есть если у нас пенал - 1, ручка - 1, то к ключу 1 будет взято значение пенал, ибо буква п встречается раньше чем буква р в алфавите. А если это не так, то я не знаю, все написанное перед этим - слова преподавателя
Офлайн
>>> 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'} >>>
Офлайн
py.user.nextОбъясните код начиная со строки for k, v in i.item()
Офлайн
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')] >>>
watermelonСоздаётся новый словарь из пустого словаря.
что происходит далее?
Отредактировано py.user.next (Май 24, 2022 11:54:23)
Офлайн
py.user.nextСпасибо огромное!
Офлайн