2015-01-18 2 views
0

У меня есть код в python, который создает словарь с некоторыми ключами и значениями. Но мне нужно, чтобы значения были упорядочены в том же порядке, в каком они были добавлены. Поэтому кодpython dictionary keys order

def getdataready(): 
    data = {} 
    data["cputemp"] = str(getcputemp()) 
    data["cas"] = str(datetime.datetime.now()).replace(" ", "%20") 
    data["fan"] = str(fanstate()) 
    data["pstemp"] = str(getPStemp()) 
    #there are some more keys added 
    return data 

объявляет словарь и возвращает его. Но когда я запускаю код, возвращаемый словарь упорядочен без каких-либо правил (pstemp, cas, cputemp, venkovniteplota, fan, pokojovatelota) Как я могу заказать их в порядке декларации (cputemp, cas, fan, pstemp, .. .)? Мне это нужно, потому что в этом порядке словарь отправляется на веб-сервер (http://parman.moxo.cz/index.php?page=info с использованием wget и словаря преобразуется в url и предоставляется PHP как значения в $ GET), и отображается в том же порядке, в каком он был получен, и я 'd хотел бы иметь его в таком порядке Спасибо.

+0

Кроме того, используйте случай с змеей для имени метода 'def get_data_ready()' –

+0

@ Kasra i get 404, может быть, неправильная ссылка? – parman

+0

Чтобы управлять порядком элементов в словаре, вы можете использовать 'OrderedDict' из модуля' collections'. Он точно сохраняет исходный порядок вставки данных при итерации. : 'from collections import OrderedDict data = OrderedDict()' read more https://docs.python.org/3.4/library/collections.html#collections.OrderedDict – Kasramvd

ответ

1

collections.OrderedDict. Он предоставляет требуемые функции и сохраняет ключи в том порядке, в котором они были добавлены.

+0

Спасибо всем, что нужно только для импорта коллекций. (по какой-то причине я не могу принять ответ прямо сейчас, так что подождите) – parman