2017-09-14 6 views
0

파이썬 사전 목록이 있습니다. 어떻게 icinga 사전에 파일로 출력이에파이썬 사전을 문자열로 변환

{foo1 = ['bar1','bar2'] , foo2 = ['bar3']} 
{foo3 = ['bar4','bar5','bar6'] , foo4 = ['bar7','bar8','bar9']} 
. 
. 
. 
{foo5 = ['bar10'] , foo6 =['bar11','bar12']} 
{foo7 = ['bar13','bar14'] , foo8 = ['bar15','bar16','bar17','bar18']} 

필요에

{'foo1':['bar1','bar2'] , 'foo2':['bar3']} 
{'foo3':['bar4','bar5','bar6'] , 'foo4':['bar7','bar8','bar9']} 
. 
. 
. 
{'foo5':['bar10'] , 'foo6':['bar11','bar12']} 
{'foo7':['bar13','bar14'] , 'foo8':['bar15','bar16','bar17','bar18']} 

에서 파이썬 사전을 변환합니다.

+0

'{foo = [ 'bar10']}'은 (는) 유효한 Python 구문이 아닙니다. – Toastrackenigma

답변

1

그런 다음, 키와 값을 반복 ,로 가입하고 {} 그들을 둘러싸고 수 있습니다

def icinga_form(d): 
    items = ', '.join(
     '{} = {}'.format(key, value) for key, value in d.items() 
    ) 
    return '{%s}' % (items,) 

을 그리고지도와 모든 항목에 적용 :

list_of_dicts = [ 
    {'foo1': ['bar1', 'bar2'], 'foo2': ['bar3']}, 
    {'foo3': ['bar4', 'bar5', 'bar6'], 'foo4': ['bar7', 'bar8', 'bar9']}, 
    ..., 
    {'foo5': ['bar10'], 'foo6': ['bar11', 'bar12']}, 
    {'foo7': ['bar13', 'bar14'], 'foo8': ['bar15', 'bar16', 'bar17', 'bar18']} 
] 

list_of_icinga = map(icinga_form, list_of_dicts) 

for s in list_of_icinga: 
    print(s) 
{foo1 = ['bar1', 'bar2'], foo2 = ['bar3']} 
{foo3 = ['bar4', 'bar5', 'bar6'], foo4 = ['bar7', 'bar8', 'bar9']} 
... 
{foo5 = ['bar10'], foo6 = ['bar11', 'bar12']} 
{foo7 = ['bar13', 'bar14'], foo8 = ['bar15', 'bar16', 'bar17', 'bar18']} 
0

정확한 문자열이 필요하면 (나는 이유를 모른다)이 것이 작동해야한다 :

def dict2str(dict): 
    mystr = '' 
    for item in dict: 
     if mystr == '': 
      mystr = item + ' = ' + str(dict[item]) 
     else: 
      mystr = mystr + ' , ' + item + ' = ' + str(dict[item]) 
    mystr = "{" + mystr + "}" 
    return(mystr) 

사전은 주문되지 않으므로 정확한 패턴이 반환되는 문제가 발생할 수 있습니다.

관련 문제