[Python-Dev] what is a dict_keys and where can I import it from?
Steven D'Aprano
steve at pearwood.info
Tue Feb 12 12:27:21 CET 2013
More information about the Python-Dev mailing list
Tue Feb 12 12:27:21 CET 2013
- Previous message: [Python-Dev] what is a dict_keys and where can I import it from?
- Next message: [Python-Dev] what is a dict_keys and where can I import it from?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 12/02/13 18:05, Chris Withers wrote: > Hi all, > > So, dicts in Python 3 return "something different" from their keys and values methods: > >> >> dict(x=1, y=2).keys() > dict_keys(['y', 'x']) >> >> type(dict(x=1, y=2).keys()) > <class 'dict_keys'> > > I have vague memories of these things being referred to as views or some such? Where can I learn more? The Fine Manual is usually a good place to refresh your vague memories :-) http://docs.python.org/3/library/stdtypes.html#dict.keys By the way, they're also in Python 2.7, only they're called "viewkeys" instead. > More importantly, how can I tell if I have one of them? Depends why you care. You may not care, but for those times where you do, they are in collections. py> from collections import KeysView py> keys = {}.keys() py> isinstance(keys, KeysView) True An anomaly, which I cannot explain: py> issubclass(type(keys), KeysView) True py> type(keys) is KeysView False py> type(keys).__mro__ (<class 'dict_keys'>, <class 'object'>) This disturbs my calm, because I expect that if issubclass returns True, the two classes will either be identical, or the second will be in the MRO of the first. What have I missed? > I guess I can keep a reference to type({}.keys()) somewhere, but that feels a bit yucky. I remember Python 1.4 days when the only way to type-test something was: if type(something) is type([]): ... so dynamically grabbing the type from a literal when needed does not seem the least bit yucky to me. -- Steven
- Previous message: [Python-Dev] what is a dict_keys and where can I import it from?
- Next message: [Python-Dev] what is a dict_keys and where can I import it from?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list