Уведомления

Группа в Telegram: @pythonsu

#1 Май 27, 2017 14:59:10

hubble
Зарегистрирован: 2013-10-11
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Не преобразуется список в словарь по функции dict()

Подскажите, пожалуйста.
Почему список, содержащий двухэлементные кортежи, не преобразуется в словарь?
Используется Python 3.6.

 >>> pythons = {
'Chapman': 'Graham',
'Cleese': 'John',
'Idle': 'Eric',
'Jones': 'Terry',
'Palin': 'Michael',
}
>>> type(pythons)
<class 'dict'="">
>>> pythons_2 = [('Chapman','Graham'), ('Cleese','John'), ('Idle','Eric'), ('Jones','Terry'), ('Palin','Michael')]
>>> type(pythons_2)
<class 'list'="">
>>> dict(pythons_2)
{'Chapman': 'Graham', 'Cleese': 'John', 'Idle': 'Eric', 'Jones': 'Terry', 'Palin': 'Michael'}
>>> type(pythons_2)
<class 'list'="">
>>>

Офлайн

#2 Май 27, 2017 15:43:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не преобразуется список в словарь по функции dict()

потому что dict возвращает новую переменную, а не изменяет старую



Офлайн

#3 Май 27, 2017 16:27:34

hubble
Зарегистрирован: 2013-10-11
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Не преобразуется список в словарь по функции dict()

Т.е., добавляя злемент бор, я получаю закономерную ошибку:

 >>> mendeleev = [('водород', 1), ('гелий', 2), ('литий', 3), ('бериллий', 4)]
>>> dict(mendeleev)
{'водород': 1, 'гелий': 2, 'литий': 3, 'бериллий': 4}
>>> mendeleev['бор'] = 5
Traceback (most recent call last):
  File "<pyshell#100>", line 1, in <module>
    mendeleev['бор'] = 5
TypeError: list indices must be integers or slices, not str
>>> 

Т.к. по прежнему добавляю строковый литерал на место индекса В СПИСКЕ.
Но ведь в примере выше получен словарь. Получается он никакого отношения не имеет к mendeleev? Список по-прежнему остался списком, а словарь не создался (преобразование не произошло)?
Зачем тогда функция dict?

Отредактировано hubble (Май 27, 2017 16:29:57)

Офлайн

#4 Май 27, 2017 16:39:10

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Не преобразуется список в словарь по функции dict()

Надо возврат функции dict куда-нибудь записать, например так

 mendeleev_dict = dict(mendeleev)

И дальше с ней работать mendeleev_dict



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#5 Май 27, 2017 16:40:22

hubble
Зарегистрирован: 2013-10-11
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Не преобразуется список в словарь по функции dict()

Спасибо.
Я уже разобрался. Не успел отписаться.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version