2016-06-02 3 views
0

Я пытаюсь создать список в Python, как показано ниже. Я хочу, чтобы вызвать эту функцию несколько раз и построить массив JSON, когда я пытаюсь с json.dumps for p in range (0,10) добавляет дополнительный [] для каждого объекта JSonpython создает несколько объектов json

def buildlist(): 
    objects_list = [] 
    d = collections.OrderedDict() 
    d['batteryLevel'] = random.randint(0, 100) 
    d['firmwareVersion'] = "2016-04-16-ENGG" 
    d['macId'] = MACprettyprint(randomMAC()) 
    d['name'] = "".join([random.choice(string.digits+string.letters) for i in xrange(7)]) 
    d['rssi'] = random.randint(0, 100) * -1 
    d['status'] = random.choice([OPEN, LOCKED]) 
    objects_list.append(d) 
    return objects_list 
+0

Пожалуйста, добавьте, как вы используете эту функцию в своем коде и где находится часть 'json' ??? ... Ваш вопрос не соответствует требованиям для [MCVE] (http: // stackoverflow.com/help/mcve) –

ответ

0

Я не совсем уверен, что ваш вопрос. Но функция, которую вы отправили, всегда будет возвращать список, содержащий только один OrderedDict. Почему бы вам просто не вернуть OrderedDict и создать список вне функции?

def builditem(): 
    d = collections.OrderedDict() 
    d['batteryLevel'] = random.randint(0, 100)  
    ... 
    d['status'] = random.choice([OPEN, LOCKED]) 
    return d 

json.dumps([builditem() for n in range(10)]) 
+0

Это было мило, спасибо много, работало как шарм, ненавижу себя, когда я понимаю, почему я не подумал об этом просто. –

+0

Постарайтесь, чтобы каждая функция делала только одну вещь, если это возможно. Ваш код будет более читабельным и легче отлаживать, тестировать, повторно использовать и поддерживать. –

+0

уверен, спасибо за предложение, отметил пункт :) –

Смежные вопросы