Порядок печати при использовании элементов() в python

Я пишу такую функцию в python:

def test(**argv):
    for k,v in argv.items():
        print k,v

и используйте функцию следующим образом:

test(x = 1, y=2, z=3)

Распечатка такова:

y 2
x 1
z 3

Мне было интересно, почему результат распечатки отсутствует?:

x 1
y 2
z 3

Любая помощь здесь?

+1
источник поделиться
2 ответа

Если вы напечатаете тип argv, вы поймете, что это словарь.

В Python словари неупорядочены. Вот почему вы получаете этот результат.

Контрольная работа

def test(**argv):
    print type(argv)

test()

>>> <type 'dict'>
+5
источник

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

+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос