Форум сайта python.su
Подскажите, пожалуйста.
Почему список, содержащий двухэлементные кортежи, не преобразуется в словарь?
Используется 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'=""> >>>
Офлайн
потому что 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 >>>
Отредактировано hubble (Май 27, 2017 16:29:57)
Офлайн
Надо возврат функции dict куда-нибудь записать, например так
mendeleev_dict = dict(mendeleev)
Офлайн
Спасибо.
Я уже разобрался. Не успел отписаться.
Офлайн