Формирование словаря в Python?

Ссылка скопирована
1 ответ

Всем привет! Не пойму, почему данная конструкция возвращает словарь?

def foo(s: str):     return s, len(s)   s = ["Воронеж"] d = dict(foo(i) for i in s) print(d)

def foo(s: str): return s, len(s) s = ["Воронеж"] d = dict(foo(i) for i in s) print(d)

А вот эта конструкция возвращает ошибку

def foo(s: str):     return s, len(s)   s = ["Воронеж"] d = dict(foo(s)) print(d)

def foo(s: str): return s, len(s) s = ["Воронеж"] d = dict(foo(s)) print(d)

Дополнительно:

тебе в ошибке даже написали причину

  • Everything_is_bad, но почему она в одном случае возникает, а в другом нет, я этого не понимаю(
  • Антон Торопов, потому что ты разное передаешь
  • Everything_is_bad, так в обоих случаях в конструкцию d = dict() - попадает то, что возвратит функция foo - функция в каждом случае возвращает кортеж
  • Антон Торопов, в первом случае не кортеж, iterable объект
  • Everything_is_bad, спасибо за пояснения)!
  • Дело в том, что при создании словаря можно передать пары вида ((ключ, значение), (ключ, значение)). То есть кортеж (или иной итерируемый объект) где элементами являются соответствующие пары. В первом случае ты по факту так и делаешь, передаешь список (на самом деле генератор, не суть) с одним элементом вида (ключ, значение)

    dict([("Воронеж", 7)])

    Во втором же случае, ты передаешь кортеж не с парами (ключ, значени), а саму пару

    dict(("Воронеж", 7))

    И когда берется первый элемент, ожидается что он будет парой, а он строка

  • Потому, что в первом случае во встроенную ф-ию dict передаëтся итератор кортежей, а во втором - кортеж из 2 элементов (словарь и целое число). Из итератора кортежей можно сделать словарь, из кортежа, состоящего из списка и целого числа - нет.

    • Спасибо за ответ!
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    Для формирования словаря в Python можно использовать фигурные скобки {} и указать пары ключ-значение через двоеточие. Вот пример:

    # Создание пустого словаря
    my_dict = {}
     
    # Добавление элементов в словарь
    my_dict['key1'] = 'value1'
    my_dict['key2'] = 'value2'
     
    # Вывод словаря
    print(my_dict)

    # Создание пустого словаря my_dict = {} # Добавление элементов в словарь my_dict['key1'] = 'value1' my_dict['key2'] = 'value2' # Вывод словаря print(my_dict)

    Также можно создать словарь сразу с заданными значениями:

    my_dict = {'key1': 'value1', 'key2': 'value2'}

    my_dict = {'key1': 'value1', 'key2': 'value2'}

    Для доступа к значениям по ключу можно использовать следующий синтаксис:

    print(my_dict['key1']) # Выведет 'value1'

    print(my_dict['key1']) # Выведет 'value1'

    Если нужно получить все ключи или все значения из словаря, можно воспользоваться методами keys() и values():

    # Вывод всех ключей
    print(my_dict.keys())
     
    # Вывод всех значений
    print(my_dict.values())

    # Вывод всех ключей print(my_dict.keys()) # Вывод всех значений print(my_dict.values())

    Таким образом, вы можете легко создать и работать со словарями в Python, используя вышеприведенные примеры.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно