On 3/4/2023 1:42 PM, Roel Schroeven wrote:
Thomas Passin schreef op 4/03/2023 om 18:49:
On 3/4/2023 11:38 AM, Gabor Urban wrote:
>   Hi guys,
> > I have a strange problem that I do not understand. I am testing function
> which returns a dictionary. The code should ensure that the keys of the
> dictionary are generated in a given order.
> > I am testing the function with the standard unittest module and use the
> assertListEqual statement to verify the sequence. Sometimes this test
> fails, sometimes passes without any change neither in the code, nor in the > testcase. I am using "list(myDict.keys())" to create the list of the keys
> of the dictionary.
> > I am running Python 3.3 on MS Windows. Any idea why is this?

List order would not be guaranteed.  Sort the list first.  Then your
problem should clear up.
How would that enable you to check that the keys in the dict are in a specific order?

I probably misunderstood. I thought you needed a list of keys in a reproducible order, which sorting the list would achieve.

Let's back up. Why do you care about having the keys in some particular order? And what is that order? Perhaps some other code design will satisfy the real purpose.

Otherwise, in Python 3.7 and up dicts maintain the insertion order of the keys. If you cannot use those versions of Python for some reason, here's a python 2.7-compatible backport of an ordered dictionary that you could probably adapt:

https://code.activestate.com/recipes/576693/

But note: "Dictionaries compare equal if and only if they have the same (key, value) pairs (regardless of ordering)" (from the Python docs).

If the order you want is not the original insertion order, then you will perhaps need to adapt the ordered dict idea to your needs.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to