2017-09-14 250 views
0

我有一個python字典列表。如何轉換Python字典從將python字典轉換爲字符串

{'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']} 

需要輸出這對於icinga字典文件。

+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) 

但請記住,詞典沒有排序,所以您可能會遇到問題,得到的確切圖案返回。