Testing list sequence question

Thomas Passin list1 at tompassin.net
Sat Mar 4 14:59:42 EST 2023


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.



More information about the Python-list mailing list