2013-02-14 4 views
7

У меня есть пространство имен, глядя, как это:Итерация через пространство имен

пространства имен (ATQ = нет, В = None, BEQ = нет, Ь = нет, Ки = нет, с = Отсутствует, гр = нет, Cj = нет, д = нет, г = нет, Jr = [ 'хх', '015'], Lc нет = None, L = None)

Как можно итерацию через него, так что я могу найти и заменить значение «xx» для клавиши «jR»?

+2

Что такое 'Namespace'? – martineau

ответ

8

Я не уверен, что вы знаете заранее, (имя jR, или только то, что одно имя имеет значение not None), но вы можете попробовать использовать ВАР(), который, как __dict__ должен быть ДИКТ, который имеет имена в вашем пространстве имен в качестве его ключей. Так что если у вас есть строка 'jR' где-то,

vars()['jR'] = vars()['jR'][0] 

также, вы можете получить тот же Dict используя namespace.__dict__ вместо vars()

оставит вас с первым значением ['xx','015'] в качестве единственного значения для jR.

EDIT: Чтобы было ясно, так как vars() и __dict__ обоих возвратных dicts, вы можете перебирать их, как:

for k in namespace.__dict__: 
    if namespace.__dict__[k] is not None: 
     <<do something>>