Python утиный тип, и, как правило, это позволяет избежать приведения faff, когда Работа с примитивными объектами.
Каноническим примером (и причиной названия) является тест на утку: если он выглядит как утка, плавает как утка и крякает как утка, то, вероятно, это утка.
Однако одним заметным исключением являются ключи/значения dict, которые выглядят как утки и плавают как утки, но, что особенно важно, не крякают, как утки.
>>> ls = ['hello']
>>> d = {'foo': 'bar'}
>>> for key in d.keys():
.. print(key)
..
'foo'
>>> ls + d.keys()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "dict_keys") to list
Может кто-нибудь просветить меня, почему это так?
dict.keys()
был списком, но это изменилось, и теперь это объект представления dict: Из справки:D.keys() -> a set-like object providing a view on D's keys
- person progmatico   schedule 16.10.2018>>>d.keys()
возвращаетdict_keys(['foo'])
- person tgikal   schedule 16.10.2018