Найти - Пользователи
Полная версия: Не преобразуется список в словарь по функции dict()
Начало » Python для новичков » Не преобразуется список в словарь по функции dict()
1
hubble
Подскажите, пожалуйста.
Почему список, содержащий двухэлементные кортежи, не преобразуется в словарь?
Используется 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'="">
>>>
FishHook
потому что dict возвращает новую переменную, а не изменяет старую
hubble
Т.е., добавляя злемент бор, я получаю закономерную ошибку:

 >>> 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?
ajib6ept
Надо возврат функции dict куда-нибудь записать, например так

 mendeleev_dict = dict(mendeleev)

И дальше с ней работать mendeleev_dict
hubble
Спасибо.
Я уже разобрался. Не успел отписаться.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB