I am doing a migration, Python2
to Pytnon3
with 2to3
.
(Python2.7.12
and Python3.5.2
exactly)
While doing the migration, 2to3
suggests I use type-cast like the below.
a = {1: 1, 2: 2, 3: 3}
for i in a.keys(): ----> for i in list(a.keys()):
print(i)
After that, I try to check what difference there is in a script.
$ python3
>>> a = {1: 1, 2: 2, 3: 3}
>>> a.keys()
dict_keys([1, 2, 3])
>>> for i in a.keys(): print(i)
1
2
3
It apparently returns different type dict_keys
not being list
but dict_keys
still seems to work with loop
like list
without type-cast in the above simple code.
I wonder If I use without type-cast, there would be some side-effect or not. If there is nothing, it looks unnecessary operation.
Why does 2to3
suggest that?