2015-05-13 2 views
1

Я разбираю файл xml ... так что есть поле под названием case: Иногда это один из OrderedDict, а иногда это список из OrderedDict. Вот и все:Выражения списков в Python

OrderedDict([(u'duration', u'2.111'), (u'className', u'foo'), (u'testName', u'runTest'), (u'skipped', u'false'), (u'failedSince', u'0')]) 


[OrderedDict([(u'duration', u'0.062'), (u'className', u'foo'), (u'testName', u'runTest'), (u'skipped', u'false'), (u'failedSince', u'0')]), OrderedDict([(u'duration', u'0.461'), (u'className', u'bar'), (u'testName', u'runTest'), (u'skipped', u'false'), (u'failedSince', u'0')])] 

Я хочу всегда иметь это выражение как единый список. Причина состоит в том, чтобы иметь петлю for, чтобы позаботиться об этом. Я думал о делать что-то вроде:

[case] 

Но, как позже я бы [[case]]. Я не думаю, что список присоединился или конкатенации помогли бы мне. Тривиальным решением было бы проверить, является ли case типом list или OrderedDict, однако я искал более простую, одну линию, питонное решение, подобное описанному выше. Как я могу это сделать?

+1

Я бы просто проверить тип, если я вам. –

+0

@ Ajay no Мне нужно все ... Я пробовал использовать 'sets' – cybertextron

ответ

3

С list и OrderedDict оба типа контейнеров, проверяя тип звуков, как будто это может быть самое простое решение, если вы уверены, что синтаксический анализ xml всегда будет использовать тип list.

Там нет причин вы не можете сделать это в однострочнике:

case = [case] if not isinstance(case, list) else case 
Смежные вопросы