Aristide Grange <aristide.gra...@gmail.com> added the comment:
My bad... For my reference to Python 2, I relied on my memory only, which
starts to vanish. Really sorry about that. Yes, `random.choice(d)` (mostly)
fails in Python 2 too, with an error message that I better understand after
reading your explanation.
So, in Python 2/3, when `random.choice()` is applied to a dictionary, it draws
a random integer i in [0, len(d)[ and tries to return the _value_ `d[i]`. It's
quite unexpected, for me at last. According to the doc:
random.choice(seq)
Return a random element from the non-empty sequence seq. If seq is empty,
raises IndexError.
In Python 3, evaluating `choice(d.keys())` raises "TypeError: 'dict_keys'
object does not support indexing". Shouldn't `choice(d)` _always_ fail with the
same error message? I am not sure to see any legitimate use for the current
behavior.
With regard to the repeated refusal to hide the fact that `choice`-ing among
the keys of a dictionary is a linear operation, I can understand this decision.
The general interest does not necessary align with that of an algorithmic
teacher which only uses Python as a support language for introducing students
to basic / transversal datatypes such as lists, arrays, dictionaries, sets, and
prefers to avoid speaking of `dict_keys` and other Python's niceties...
Anyway, thanks a lot for your detailed and patient answer.
--
___
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33098>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com