In Python 2.7, I could get dictionary keys, values, or items as a list:
>>> newdict = {1:0, 2:0, 3:0}
>>> newdict.keys()
[1, 2, 3]
Now, in Python >= 3.3, I get something like this:
>>> newdict.keys()
dict_keys([1, 2, 3])
So, I have to do this to get a list:
newlist = list()
for i in newdict.keys():
newlist.append(i)
I'm wondering, is there a better way to return a list in Python 3?
Try list(newdict.keys())
.
This will convert the dict_keys
object to a list.
On the other hand, you should ask yourself whether or not it matters. The Pythonic way to code is to assume duck typing (if it looks like a duck and it quacks like a duck, it's a duck). The dict_keys
object will act like a list for most purposes. For instance:
for key in newdict.keys():
print(key)
Obviously, insertion operators may not work, but that doesn't make much sense for a list of dictionary keys anyway.