Почему Питон возвращает разный список

Имеется такой кусок кода из программы - Список филиалов в виде списка словарей, и функция которая находит русское название для вывода его в шаблон. Периодически выводится значение на английском. Пробовал return list(i.get('fil').values()) да он действительно список выводит по разному (не всегда). Почему так. Что это и как бороться с этим?. Python 3.5.3. На более позднем Питоне все нормально. Но обновить Питон пока боязно.

    list_fils = [{'fil': {'value': 'Москва', 'name': 'moscow'}},
       {'fil': {'value': 'Волгоград', 'name': 'volgograd'}},
       {'fil': {'value': 'Липецк', 'name': 'lipetsk'}},
       {'fil': {'value': 'Курск', 'name': 'kursk'}}]

    def name_fil_rus(name_fil):
        for i in list_fils:
            if name_fil in i.get('fil').values():
                return list(i.get('fil').values())[0]

    print(name_fil_rus('kursk'))

    Вывод когда return list(i.get('fil').values())
    python3.5 123.py
    ['kursk', 'Курск']
    python3.5 123.py
    ['kursk', 'Курск']
    python3.5 123.py
    ['Курск', 'kursk']
    python3.5 123.py
    ['kursk', 'Курск']
    python3.5 123.py
    ['Курск', 'kursk']

Ответы (1 шт):

Автор решения: CrazyElf

Я бы в вашем случае просто сделал нормальные словари для перевода и брал значения уже оттуда, если поля словаря у вас жёстко заданы и заранее известно где что (если в name всегда английское название, а в value русское):

list_fils = [{'fil': {'value': 'Москва', 'name': 'moscow'}},
   {'fil': {'value': 'Волгоград', 'name': 'volgograd'}},
   {'fil': {'value': 'Липецк', 'name': 'lipetsk'}},
   {'fil': {'value': 'Курск', 'name': 'kursk'}}]

eng_rus = {y['name']:y['value'] for x in list_fils for y in x.values()}
rus_eng = {y['value']:y['name'] for x in list_fils for y in x.values()}

print(eng_rus.get('kursk'))

Вывод:

Курск

В этом случае и перебора никакого не нужно, значение просто берётся из заранее подготовленного словаря.

В зависимости от задачи можно сделать и универсальный словарь для перевода в обе стороны, но не зная постановку задачи тут сложно сказать, что больше подойдёт.

Но в любом случае полагаться на порядок следования пар ключ-значение в словаре не стоит, хотя с какой-то версии питона стабильный порядок и поддерживается. В общем случае коллекция "словарь" не подразумевает сохранения порядка элементов, в отличие от списка.

→ Ссылка